2

私は次のコードに取り組んでいます:

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:
            a = progX[i]

...しかし、prog のどのインデックスに a. このプログラムの入力例は次のとおりです。

findLine(['10 GOTO 20', '20 END'], '20')

問題自体は、私自身よりもうまく説明できるはずです:
関数 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 になります。

では、部分文字列として ans を含む最初のインデックスを見つけるにはどうすればよいでしょうか? 助けてくれてありがとう。

4

3 に答える 3

0

最後の行をスキップしています。

Range は、2 番目のパラメーターまでのすべてのシーケンスを生成しますが、2 番目のパラメーターは含まれません。

>>> list(range(5))
[0, 1, 2, 3, 4]

値が 5 つあるのに5、そのうちの 1 つではありませんか? (また、 への最初のパラメーターが の場合range0、省略できます。)

何かを反復するが、それでもインデックスを知ることができるより Pythonic な方法は、次を使用することenumerateです。

for index, line in enumerate(prog):
    line_parts = line.split()
    for part in line_parts:
        if part == target:
            # Figure out what to do here.
            # Remember that 'index' is the index of the line you are examining.
于 2013-04-04T20:17:57.617 に答える