0

タートルグラフィックスで描画するために作成しているプログラムを実行し、終了コマンドを入力しましたが、単一単語コマンドを入力するたびに、「戻る」のelifでindexerror(IndexError:リストインデックスが範囲外)が発生します指図:

def parse_line(line):
    global items_in_line
    items_in_line = line.split(" ",1)
    if items_in_line[0] == "forward":
        if isinstance(items_in_line[1], int):
                return items_in_line
    elif items_in_line[0] == "back" or "backward":
        if isinstance(items_in_line[1], int):
             return items_in_line
    ...
    elif items_in_line[0] == "exit":
        sys.exit()

line=input("Enter a turtle command or enter 'file' to load commands from a file")

x = parse_line(line)

なんで?どうすればこれを修正できますか?

4

2 に答える 2

1
elif items_in_line[0] == "back" or "backward":

上記の条件は次と同等です: -

elif (items_in_line[0] == "back") or "backward":

これは常に true と評価されるため、「exit」を入力として渡すと実行されるため、items_in_line[1]がスローされIndexErrorます。

条件を次のように変更する必要があります: -

elif items_in_line[0] in ("back", "backward"):
于 2012-12-05T18:04:53.397 に答える
0

それelifは読むべきです:

elif items_in_line[0] in ("back", "backward"):

現在のバージョンは次のように解釈されます

elif (items_in_line[0] == "back") or bool("backward"):

Trueは であるため、常に と評価されbool("backward")ますTrue

于 2012-12-05T18:04:53.147 に答える