正如标题所示,我目前正在使用 Python 开发 BASIC 模拟器。这是我解决这个问题的代码:
def getBASIC():
l = []
x = 1
while x == 1:
i = input()
l.append(i)
if len(i.split()) != 3:
x = 0
return l
def findLine(prog, target):
for l in range(0, len(prog)):
progX = prog[l].split()
if progX[0] == target:
return l
def execute(prog):
location = 0
visited = [False] * len(prog)
while True:
T = prog[location].split()[2]
location = findLine(prog, T)
visited[location] = True
if visited[len(visited)-1] == False:
return "infinite loop"
else:
return "success"
第一个函数做了它打算做的事情——将 BASIC 代码的输入转换成一个列表。第二个函数 findLine 也做了它打算做的事情,因为它找到包含等于输入的字符串的项目。然而,最后一个功能,我无法开始工作。我知道我必须做什么,那就是检查它的一部分是否被访问过两次。由于 while 循环的存在,我无法弄清楚如何做到这一点。因此,该函数的后半部分只是占位符。如果您能帮我弄清楚如何解决这个问题,将不胜感激。谢谢。