我是Python编程的新手,我正在尝试编写代码来检查DFA(确定性有限自动机)是否有空语言。
我正在使用二维数组来存储DFA的状态。 在执行代码时,我不断使列表索引超出范围。我该如何解决这个问题?
以下是代码
top=-1
count=0
n=int(input("\nEnter the no of states"))
mat=[[]]
b=[]
print("\nEnter the transition table")
for i in range(0,n):
for j in range(0,n):
mat.append(input())
finalState=input("\nEnter the final state:")
startState=input("\nEnter the start state:")
for i in range(0,n):
for j in range(0,n):
if mat[i][j]:
b[++top]=j
for k in range(top):
if b[k]==finalState:
count+=1
if count>0:
print("\nLanguage is not empty")
else:
print("\nLanguage is empty")
答案 0 :(得分:3)
当你制作2x2表时,你想要mat [[1,2],[3,4]],但你现在得到[[],1,2,3,4]
相反,请尝试:
mat = []
for i in range(n):
row = []
for j in range(n):
row.append(input())
mat.append(row)
此外,Python没有" ++"运算符,因此b[++top]=j
与b[top] = j
相同。如果要增加top
,则在使用它来索引列表之前,必须在它自己的行上执行此操作。
除此之外,b
的元素为零,因此以任何方式对其进行索引都会导致崩溃。如果您尝试通过向其添加新项目来增加b
的大小,请使用append
。那么你根本不需要top
变量。
b.append(j)