-1

我遇到了以下问题:

定义一个函数 findLine(prog, target) 来执行以下操作。假设 prog 是一个包含 BASIC 程序的字符串列表,例如 getBASIC() 生成的类型;假设 target 是一个包含行号的字符串,它是 GOTO 语句的目标。该函数应返回索引 i(一个介于 0 和 len(prog)-1 之间的数字),使得 prog[i] 是其标签等于 target 的行。

示例输入/输出:如果调用
findLine(['10 GOTO 20','20 END'], '10')
则输出应为 0,因为列表的第 0 项是标签为 10 的行。

这是我的代码:

    def findLine(prog, target):
   for l in range(0, len(prog)-1):
      progX = prog[l].split()
      for i in range(0, len(progX)):
         if progX[i] == target:
            ans = progX[i]
   return prog.index(ans)

正如您从代码中可以看出的那样,我即将完成(至少我认为我是),但我已经变得相当坚持这一点。但是,我不知道如何识别 prog 中的哪个索引包含 progX 中的字符串。提前感谢您对此的任何帮助。

4

2 回答 2

1

我认为你只需要用这个替换内部 for 循环:

if progX[0] == target:
   return l

这样您就可以检查该行是否以您要查找的行号开头。

于 2013-04-04T18:57:04.013 回答
0

只需尝试以下代码,它对我有用。

def findLine(prog, target):
   for l in range(0, len(prog)):
     progX = prog[l].split()
     for i in range(0, len(progX)):
          if progX[0] == target:
           return l
于 2017-12-31T20:39:27.823 回答