-1

次の問題が提示されました。

以下を実行する関数 findLine(prog, target) を定義します。prog は、getBASIC() によって生成される型のような、BASIC プログラムを含む文字列のリストであると仮定します。target は、GOTO ステートメントのターゲットである行番号を含む文字列であると仮定します。この関数は、prog[i] がターゲットと等しいラベルを持つ行になるように、インデックス i (0 から len(prog)-1 までの数値) を返す必要があります。

入力/出力の例:
findLine(['10 GOTO 20','20 END'], '10')を呼び出した場合
、リストの項目 0 はラベル 10 の行であるため、出力は 0 になります。

これが私のコードです:

    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 に答える