【发布时间】:2017-12-08 21:11:15
【问题描述】:
我正在使用 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_sadon 获得了解决方案。谢谢你。请随时发布其他一些不同的方式。
【问题讨论】:
-
请注意,这种
try-except方式并不是非常糟糕。 -
确实如此,但我想知道其他可能的方法来做同样的事情,因为我是 python 新手,
-
@Jyotirmay 你没有终端状态...?
-
我不明白,什么是终端状态?
标签: python