我正在学习Python 3并且正在进行一项练习,该练习要求编写一个模拟/读取BASIC程序作为输入的Python程序.我坚持编写应该检测无限循环的Python程序部分.这是我到目前为止的代码:
def execute(prog):
while True:
location = 0
if prog[location] == len(prog) - 1:
break
return "success"
getT = prog[location].split()
T = len(getT) - 1
location = findLine(prog, T)
visited = [False] * len(prog)
Run Code Online (Sandbox Code Playgroud)
这里,prog是包含BASIC程序的字符串列表(字符串的格式为5 GOTO 30,10 GOTO 20等).
T是prog [location]中指示的目标字符串.
如果BASIC程序有一个无限循环,那么我的Python程序将有一个无限循环.我知道如果任何一行访问两次,那么它会永远循环,我的程序应该返回"无限循环".
教程助手给出的提示说"初始化一个访问的列表= [False]*len(prog),并在访问prog [i]时将visited [i]更改为True.每次循环时,访问的一个值更新[考虑如何更改列表中的单个值.然后考虑如何识别访问[]中需要更改的值."
所以这是我坚持的部分.如何跟踪prog中访问/循环的字符串?