我要做一个具有ε跃迁的非确定性有限自动机。我更像是一个c,c,JavaScript的家伙,但是我的大学出于某种原因认为python是唯一的出路,所以今天我学习了python,但显然还不够。在
不管怎样。问题出在“automaton
”函数中。我用带有一个元素的初始状态列表(stanje1
)和自动机必须读取的字符数组(inputArrays[0]
)以及定义转换函数的字典(dictionary key是stringcurrentState,inputCharacter
,value是next states的数组)。在
第一次迭代运行得很好,但当我想递归地检查通过epsilon转换得到的所有状态时,我得到了错误:
TypeError: 'NoneType' object is not iterable
调用自动机递归时,所有参数的定义都与top call中的定义类似,但错误不知怎么就跳出了。在
这里是link to my code,以及defines automaton(您需要像这样运行它myScript.py < automaton.txt
)。另外,下面是完整的错误报告:
您的提示是崩溃发生在以下行:
而不是更深入的}的返回值必须是
eNKA
函数。您可能会怀疑这一行中的某些内容是None
,而不是iterable。ir
不可能是None
,因为您在前面检查过这种可能性,所以{None
(而您实际上正在做states += None
)。在事实上,情况就是这样。
eNKA
并不是return
在所有可能的情况下都是一个值,这可能导致返回None
的默认值。在因此,修复方法将是查看
eNKA
中每个if
条件都失败的原因,并适当地进行修复(如果每个条件都失败,则返回更合理的值)。在相关问题 更多 >
编程相关推荐