我试图制作一个能够在风险游戏中给出一堆骰子的赢/输比率的函数。
对于那些不知道的人,在风险中,攻击者和防御者将攻击者的最大死亡与防御者的最大死亡进行比较,并且这对于每对骰子重复,直到防御者为止更长的骰子离开了。如果攻击者获胜,则后卫失去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)
答案 0 :(得分:3)
在for i in m
循环中,i
的值是m
的内容,而不是m
的索引。在您的示例中,第一次通过该循环i
是m
的第一个值,即3,因此您的条件if n[i] > m[i]
正在执行if n[3] > m[3]
。 3
超出了m的索引范围,因此IndexError
。