2014-02-15 91 views
0
userValue = 5 
selection = [] 

if userValue == 1: 
    selection.append("box") 
if userValue == 2: 
    selection.append("ball") 
if userValue == 3: 
    selection.append("pen") 
if userValue == 4: 
    selection.append("pencil") 
elif(): 
    print ("please enter a correct value") 

print (selection[0]) 

我想存儲在列表中的值,它不斷給我錯誤,我不知道如何做到這一點,任何幫助將不勝感激。非常感謝。 :)IndexError:列表索引超出範圍。 python 3.3

+1

你的'elif'條件是空的,這是正常的嗎? –

+1

@MaximeLorant:看起來像一個拙劣的'else:'; '()'是一個空元組,所以'elif():'總是假的。 –

回答

0

userValue在開頭設置爲5,列表爲空。因此,您不會傳入selection.append(),因爲5不等於1,至2,至3或至4.

您有elif條件的print聲明,然後嘗試訪問空列表的第一個元素......這是不可能的,所以引發異常。
順便說一句,你應該使用else關鍵字而不是elif奇怪的條件。

一個更Python(和工作)你的問題的解決方案是:

userValue = 5 
selection = [] 

# Create a tuple of string, in the same order as your if before 
values = ("", "box", "ball", "pen", "pencil") 

if userValue < len(values): 
    selection.append(values[userValue]) 
    print (selection[0]) 
else: 
    print ("please enter a correct value") 
-1

sectionvalue [0]是錯誤的,因爲沒有什麼在列表中。 必須添加任何清單

爲什麼會出現錯誤 uservalue是,如果塊你沒有添加條件檢查值5 您使用ELIF 5 ,但它絕不會工作的一個空的元組是評估假

現在selectionvalue是empty.but你想接取它的0指數的空 如果您嘗試在python訪問一個空列表指數會有你有

+0

嘿,我的答案是如何-1 – aovbros

+0

我用它,因爲你的解決方案最多是不完整的。 –

+0

@aovbros我認爲這是因爲你沒有真正解釋爲什麼列表中沒有任何內容。你的回答非常含糊。 (我沒有downvote,只是假設) –

0

的error.that你得到一個錯誤,因爲有ISN」 t列表中的任何內容。您的每個if測試都是錯誤的,因此不會添加任何內容。您的elif塊未執行,因爲您的測試(一個空元組)的計算結果爲false。如果你想要一個在前面的塊爲假的情況下執行的塊,else將是更好的選擇。

如果您想要防止將來出現類似錯誤,請確保您有一個else塊,在每個系列if s之後向列表中添加一些內容,以便根據用戶輸入將內容添加到空列表中。

相關問題