Python非确定性epsilon authomaton:对象不是iterab

2024-10-04 07:35:49 发布

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

我要做一个具有ε跃迁的非确定性有限自动机。我更像是一个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)。另外,下面是完整的错误报告:

^{pr2}$

Tags: 函数元素列表定义自动机错误数组javascript
1条回答
网友
1楼 · 发布于 2024-10-04 07:35:49

您的提示是崩溃发生在以下行:

states += eNKA(s, ir[0], fn)

而不是更深入的eNKA函数。您可能会怀疑这一行中的某些内容是None,而不是iterable。ir不可能是None,因为您在前面检查过这种可能性,所以{}的返回值必须是None(而您实际上正在做states += None)。在

事实上,情况就是这样。eNKA并不是return在所有可能的情况下都是一个值,这可能导致返回None的默认值。在

因此,修复方法将是查看eNKA中每个if条件都失败的原因,并适当地进行修复(如果每个条件都失败,则返回更合理的值)。在

相关问题 更多 >