我是 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)
当您制作 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)
Run Code Online (Sandbox Code Playgroud)
此外,Python 没有“++”运算符,因此b[++top]=j与b[top] = j. 如果你想 increment top,你必须在使用它来索引列表之前在它自己的行上做。
最重要的是,b它有零个元素,因此以任何方式对其进行索引都会导致崩溃。如果您尝试通过向其b添加新项目来增加其大小,请使用append. 那么你根本不需要top变量。
b.append(j)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4124 次 |
| 最近记录: |