- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我必须制作具有 epsilon 转换的非确定性有限自动机。我更像是一个 c、c#、JavaScript 的人,但我的大学出于某种原因认为 python 是唯一的出路,所以今天我学习了 python,但显然还不够。
无论如何。问题出在“automaton
”函数中。我用带有一个元素的初始状态列表(stanje1
)和自动机必须读取的字符数组(inputArrays[0]
)以及定义转换函数的字典(字典键是字符串currentState,inputCharacter
,值是下一个数组)来调用它州)。
第一次迭代运行良好,但是当我想递归检查我通过 epsilon 转换获得的所有状态与下一个字符时,我得到错误:
TypeError: 'NoneType' object is not iterable
调用自动机递归时所有参数的定义与 top 调用类似,但错误会以某种方式跳出。
这是 link to my code ,以及 defines automaton 的测试文件(你需要像这样运行它 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
最佳答案
您的提示是崩溃发生在这一行:
states += eNKA(s, ir[0], fn)
而不是在 eNKA
函数的更深处。您可能怀疑此行中的内容是 None
,而不是可迭代对象。 ir
不可能是 None
因为你之前检查过这种可能性,所以 eNKA
的返回值一定是 None
(并且您正在有效地执行 states += None
)。
其实是这样的。 eNKA
不会在所有可能的情况下返回
一个值,这可能会导致返回默认值 None
。
因此,解决方法是查看为什么 eNKA
中的每个 if
条件都失败,并适本地修复它(或者如果每个条件都失败则返回更明智的东西)。
关于Python 不确定性 epsilon authomaton : object is not iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23022164/
我必须制作具有 epsilon 转换的非确定性有限自动机。我更像是一个 c、c#、JavaScript 的人,但我的大学出于某种原因认为 python 是唯一的出路,所以今天我学习了 python,但
我是一名优秀的程序员,十分优秀!