엡실론 전환을 사용하여 비 결정적 유한 유한 자동화를 만들어야합니다. 저는 C#, 자바 스크립트 녀석입니다. 그러나 대학에서는 파이썬이 어떤 이유로 갈 수있는 유일한 방법이라고 생각합니다. 그래서 오늘 파이썬을 배웠지 만 분명히 충분하지 않습니다.Python 비 결정적 엡실론 authomaton : 객체가 반복 가능하지 않습니다.
어쨌든. 문제는 "automaton
"기능입니다. 하나의 요소 (stanje1
)와 오토 마톤이 읽어야하는 문자들의 배열 (inputArrays[0]
)과 트랜지션 함수를 정의하는 사전 (사전 키는 문자열 currentState,inputCharacter
이고 값은 다음 상태의 배열)을 가진 초기 상태 목록으로 호출합니다.
첫 번째 반복은 잘 실행,하지만 난 재귀 적으로 다음 문자에 대한 엡실론 전환을 통해 내가 가진 모든 상태를 검사 할 때 오류 얻을 :
TypeError: 'NoneType' object is not iterable
기계적으로 재귀가 상위 호출로 similarely 정의 된 모든 인수로 호출을 , 그러나 오류는 어떻게 든 그냥 뛰어 내린다.
여기에 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
정말인가요? 그것은 iterable에 관한 것이고, 이것은 덧셈과 관련이 없습니다. 차라리 '없다'는 것이 'ir'일 것입니다. –
효과가있었습니다. 내가 왜 그런 식으로 내 코드에 영향을 미칠지 모르겠지만. eNKA의 가치를 반복하지 않습니다. 감사! – Jinx
'states'는 목록입니다. 'somelist + = x'는리스트를 확장하기 위해'x'를 반복해야합니다. (그게 네가하고 싶은 일인지 나는 잘 모르겠다.하지만 iteration은 어떻게 연관되어 있나.) – DSM