2016-11-15 9 views
2

リスクのゲームでサイコロの数のロールの勝敗を与える関数を作成しようとしています。list「リスク」ダイスゲームのインデックスエラー

危険にさらされている攻撃者と防御側は、攻撃側の最大の死者と防御側の最大の死者が比較され、防御側にはダイスが残らなくなるまで繰り返されます。攻撃者が勝った場合、防御側は1軍を失い、防御側が死亡以上の場合、攻撃側は1軍を失う。攻撃者は2 5> 3及び4> 2ので、失われた場所

だから私は、コードを実行する場合、私は

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

(0, -2) 

を取得する必要があります。

私のコードを実行しようとすると、リストインデックスエラーが発生します。エラーを修正するための助けがあれば幸いです。あなたのfor i in mループでは

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 =(ソート済み(n))[:: - 1]' – Billy

答えて

3

iの値が内容m、ないmの指標です。あなたの例では、最初のループimの3番目の値なので、条件式if n[i] > m[i]if n[3] > m[3]です。 3がmのインデックスの範囲外であるため、IndexErrorです。