列出指数错误"风险"骰子游戏

时间:2016-11-15 14:11:51

标签: python python-3.x

我试图制作一个能够在风险游戏中给出一堆骰子的赢/输比率的函数。

对于那些不知道的人,在风险中,攻击者和防御者将攻击者的最大死亡与防御者的最大死亡进行比较,并且这对于每对骰子重复,直到防御者为止更长的骰子离开了。如果攻击者获胜,则后卫失去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 个答案:

答案 0 :(得分:3)

for i in m循环中,i的值是m内容,而不是m的索引。在您的示例中,第一次通过该循环im的第一个值,即3,因此您的条件if n[i] > m[i]正在执行if n[3] > m[3]3超出了m的索引范围,因此IndexError