返回无限循环python成功
我正在在线学习Python,但不明白我应该采取的最后一步 问题是 编写函数executeprog以执行以下操作。假设prog是包含基本程序的字符串列表,如前所述。然后,函数应该返回success或infinite循环,这取决于程序是终止还是永远循环。重要提示:您应该假设子任务2中定义的过程findLineprog、目标已经定义,您不需要重新编写它。暗示 输入示例:['5转到30','10转到20','20转到10','30转到40','40结束'] 我的代码在返回成功时仍然返回无限循环,但我确实找不到最后一步。我在这里也包括所有调试检查返回无限循环python成功,python,loops,Python,Loops,我正在在线学习Python,但不明白我应该采取的最后一步 问题是 编写函数executeprog以执行以下操作。假设prog是包含基本程序的字符串列表,如前所述。然后,函数应该返回success或infinite循环,这取决于程序是终止还是永远循环。重要提示:您应该假设子任务2中定义的过程findLineprog、目标已经定义,您不需要重新编写它。暗示 输入示例:['5转到30','10转到20','20转到10','30转到40','40结束'] 我的代码在返回成功时仍然返回无限循环,但我确实
def execute(prog):
location = 0
#print('prog = ', prog)
visited = [False] * len(prog)
while True:
for i in range (0,len(prog)):
visited[i] = True
#print('prog is type=',type(prog))
# print(type(location))
#print('len of prog=', len(prog))
#for i in range (0,len(prog)):
# visited[i] = True
# print('visited =', visited)
# print('visited[i] =', visited[i])
# print('prog[i] =', prog[i])
findT = prog[location].split()
#print('findT = ',findT)
T = findT[-1]
#print('T=',T)
location = findLine(prog, T)
#print('new location=', location)
if visited[location]:
return "infinite loop"
elif location==len(prog)-1:
return "success"
#print('T=',T)
#print('prog = ', prog)
提示:以下是我编写并使用的getBASIC和findline代码:
这是正确的代码版本:
def execute(prog):
location = 0
counter = 0
while True:
findT = prog[location].split()
T = findT[-1]
location = findLine(prog , T)
counter += 1
if T == 'END':
return "success"
if counter > len(prog):
return "infinite loop"
在这种情况下,请使用简捷的方法解决您的问题:您能修复程序的缩进吗?在将整个访问列表初始化为False后,您强制将其设置为True,以便最终检查访问的[位置]是否始终有效。在实际访问时,您还忘记设置已访问的[位置]。听起来您正试图找到停止问题的解决方案。“恐怕没有解决停止问题的方法,这一点已经被证明了。@skyking他肯定可以让它在诸如示例输入之类的琐碎程序中工作。”。如果你说的问题是让它为任何程序工作。@loesbrown findLineprog,target这个函数是必需的。也许你以前做过。
def execute(prog):
location = 0
counter = 0
while True:
findT = prog[location].split()
T = findT[-1]
location = findLine(prog , T)
counter += 1
if T == 'END':
return "success"
if counter > len(prog):
return "infinite loop"