2017-04-04 119 views
-1
opponent = [1, 1, 1, 1, 1, 1] 

我只想要第一個元素在我的名單「對手」,所以我再代碼:IndexError但我不知道什麼是錯

opponent = int(opponent[0]) 

我用它來再算上數量'對手的在我的其他名單之一。

if wongames.count(opponent) == 2: 
...blablabla 

它說我提交的 行提出型IndexError的異常。 'opponent = int(opponent [0])')。

這是爲什麼?我該如何解決? :(

+0

你的問題不清楚。你應該發佈你的代碼。你爲什麼要在這裏給int賦一個int? INT(oppponent [0])。 – Wiredo

+1

將變量名稱改爲「對手」。您在步驟'opponent = int(opponent [0])''中將對手列表重新聲明爲整數。所以你不能把它用作列表。 – lpsandaruwan

回答

3

你的對手的名單被稱爲opponent,後來就在你的代碼做:

opponent = int(opponent[0]) 

覆蓋較早opponent名單,所以現在opponent名稱指的是一個整數,而不是

下次你做同樣的再次:

opponent = int(opponent[0]) 

你試圖訪問一個INTE的[0]指數ger,這顯然不起作用,因爲整數不能被索引。

解決方案:只需爲兩個變量使用不同的名稱。我會打電話的名單opponents代替:

opponents = [1, 1, 1, 1, 1] 
opponent = opponents[0] 

注意,因爲他們已經在列表中的整數,你不需要int()。你只需要使用int(),如果你想將它從一種類型轉換爲另一種,例如,如果它是一個字符串'0',而不是一個整數0

0

我不知道發生了什麼,但我懷疑indexError是因爲你是分配相同的opponent變量從列表中挑選元素opponent

如果你運行這個代碼片段進行第二次迭代,變量opponent不再是列表了,也許這就是錯誤的原因。嘗試改變賦值給一個新的變量。

opponent = [1, 1, 1, 1, 1, 1] 

## Code block 
opponent = int(opponent[0]) # Now opponent is not a list, just a number 
if wongames.count(opponent) == 2: 
    # do something 

如果代碼塊第二次執行,則會發生錯誤。嘗試改變代碼的東西如下,

opponent = [1, 1, 1, 1, 1, 1] 
first_opponent = int(opponent[0]) 
if wongames.count(first_opponent) == 2: 
    # do something 

希望這有助於! :)

相關問題