我正在尝试创建一个函数,给出风险游戏中掷骰子数量的赢/输比。
对于那些不知道的人来说,在《Risk》中,有攻击者和防御者,攻击者的最大骰子与防御者的最大骰子进行比较,并且对每对骰子重复此操作,直到防御者不再有骰子为止。如果进攻方获胜,则防守方损失 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)
最佳答案
在 for i in m
循环中,i
的值是 m
的内容,而不是m
的索引。在您的示例中,第一次循环 i
是 m
的第一个值,即 3,因此您的条件 if n[i] > m[ i]
正在执行 if n[3] > m[3]
。 3
超出了 m 的索引范围,因此 IndexError
。
关于python - "Risk"骰子游戏列表索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40611972/