如何在实现自动机时处理Python键错误?

2024-09-27 09:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python实现一个简单的自动机函数

def RunAutomata(transition, initial, accepting, s):
    state = initial
    for c in s:
        try:
            state = transition[state][c]
        except KeyError:
            return False
    return state in accepting

dfa = {0:{'a':1, 'b':2},
       1:{'c':3,'d':2},
       2:{'f':3},
       3:{'e':1}}

RunAutomata(dfa, 0, {2}, 'bfecedfedf')

这段代码的直觉:它检查dfa和字符串,以确定给定dfa下是否接受该字符串。如果接受返回True,否则返回False

在这里你可以看到,在字典里,我用的是字母键,所以在遍历时,如果找不到键,就会抛出KeyError。 我使用try-except块来处理它,但是我想知道是否有更好的替代方法可以使用异常处理funda来解决这个问题

编辑:从@omri\u sadon获得了一个解决方案。非常感谢。请随时张贴一些其他不同的方式以及


Tags: 函数字符串infalsereturn自动机initialstate
1条回答
网友
1楼 · 发布于 2024-09-27 09:24:25

您可以使用dictget方法

transition.get(state) # default for None

transition.get(state, False) # If key not in dict, False is returned

方法get()返回给定键中的值

如果关键字不在dict中,则返回默认值

相关问题 更多 >

    热门问题