返回无限循环python成功

返回无限循环python成功,python,loops,Python,Loops,我正在在线学习Python,但不明白我应该采取的最后一步 问题是 编写函数executeprog以执行以下操作。假设prog是包含基本程序的字符串列表,如前所述。然后,函数应该返回success或infinite循环,这取决于程序是终止还是永远循环。重要提示:您应该假设子任务2中定义的过程findLineprog、目标已经定义,您不需要重新编写它。暗示 输入示例:['5转到30','10转到20','20转到10','30转到40','40结束'] 我的代码在返回成功时仍然返回无限循环,但我确实

我正在在线学习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"