gpt4 book ai didi

Python 不确定性 epsilon authomaton : object is not iterable

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:32 24 4
gpt4 key购买 nike

我必须制作具有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com