2012-12-05 94 views
0

運行一個程序我正在使用turtle圖形進行繪製,但是現在只要輸入任何單個字的命令,我就會收到一個indexerror(IndexError:list index out of range )在elif處爲「後退」命令:嵌套ifs中使用python的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) 

爲什麼?我該如何解決這個問題?

+1

注意改變過去別的艾利芙像你一樣也解決不了問題。由於支票不會達到它。你需要改變第二elif。 –

回答

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

上述條件等價於: -

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

如果你通過「退出」作爲輸入,這將永遠被評估爲true,因而也將被執行,因此items_in_line[1]將拋出IndexError

您需要的條件更改爲: -

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

比我的解決方案更好,謝謝 – Orgmo

+0

@ user1879595。看到我對你的改變的評論。它不會通過將最後一個更改爲elif來解決您的問題。 –

0

elif應改爲:

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

您當前的版本被解釋爲

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

總是計算爲True,因爲​​是True