二维数组Python:列表索引超出范围

shu*_*amj 0 python arrays

我是 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")
Run Code Online (Sandbox Code Playgroud)

Kev*_*vin 5

当您制作 2​​x2 表时,您希望 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)
Run Code Online (Sandbox Code Playgroud)

此外,Python 没有“++”运算符,因此b[++top]=jb[top] = j. 如果你想 increment top,你必须在使用它来索引列表之前在它自己的行上做。

最重要的是,b它有零个元素,因此以任何方式对其进行索引都会导致崩溃。如果您尝试通过向其b添加新项目来增加其大小,请使用append. 那么你根本不需要top变量。

b.append(j)
Run Code Online (Sandbox Code Playgroud)