我必须用 epsilon 转换制作非确定性有限自动机。我更喜欢 ac、c#、JavaScript 的人,但我的大学出于某种原因认为 python 是唯一的出路,所以今天我学习了 python,但显然还不够。
反正。问题出在“ automaton
”函数中。我用带有一个stanje1
元素inputArrays[0]
(currentState,inputCharacter
第一次迭代运行良好,但是当我想递归检查通过 epsilon 转换获得的所有状态与下一个字符时,我得到错误:
TypeError: 'NoneType' object is not iterable
使用与 top 调用类似定义的所有参数调用自动递归,但错误以某种方式跳出。
这是我的代码的链接,以及定义自动机的测试文件(您需要像这样运行它myScript.py < automaton.txt
)。此外,这是一个完整的错误报告:
C:\Users\Jinx\Desktop\UTRLabos1>sim.py < test.txt
['stanje1']
['st6']
Traceback (most recent call last):
File "C:\Users\Jinx\Desktop\UTRLabos1\sim.py", line 50, in <module>
print(automaton(['stanje1'], inputArrays[0], transitionFunction))
File "C:\Users\Jinx\Desktop\UTRLabos1\sim.py", line 45, in automaton
if estates : other = automaton(estates, ir[1:], fn)
File "C:\Users\Jinx\Desktop\UTRLabos1\sim.py", line 37, in automaton
states += eNKA(s, ir[0], fn)
TypeError: 'NoneType' object is not iterable