2016-11-15 55 views
2

我正在嘗試使風險博弈中一個擲骰子數量的贏/輸比率的函數。list「風險」骰子游戲的索引錯誤

對於那些不知道的人,在風險中有一個攻擊者和防守者,攻擊者的最大死亡數量與防守者的最大死亡率相比較,並且這對每對骰子都重複,直到防守者不再有骰子離開。如果攻擊者獲勝,則防守隊員失去1支隊伍,如果防守隊員死亡數量相等或更多,則攻擊者失去1隊軍隊。

所以,如果我運行代碼,我應該得到

result([1, 4, 5], [3, 2]) 

(0, -2) 

下,攻擊者輸了兩場,因爲5> 3,4> 2。

當我嘗試運行我的代碼時,出現一個列表索引錯誤,對修復錯誤的任何幫助都非常感激。

def result(n,m): 
    first=0 
    second=0 
    n=(sorted(n))[::-1] 
    m=(sorted(m))[::-1] 
    while len(n)>len(m): 
     n = n[:-1] 
    while True: 
     for i in m: 
      if n[i] > m[i]: 
       second -= 1 
      elif n[i] <= m[i]: 
       first -= 1 
      else: 
       break 
    return (first,second) 
+1

'n.sort(reverse = True)'=='n =(sorted(n))[:: - 1]' – Billy

回答

3

在你for i in m循環的i值是內容mm沒有索引。在你的例子中,第一次通過該循環i是第一個值m,這是3,所以你的條件if n[i] > m[i]正在做if n[3] > m[3]3超出了m的指數範圍,因此IndexError