我试图建立一个函数,在风险游戏中给出一卷骰子的输赢率。
对于那些不知道的人,在危险中有攻击者和防御者,攻击者的最大死亡数与防御者的最大死亡数相比较,并且对每一对骰子重复这种情况,直到防御者不再有骰子。如果攻击者获胜,防御者将失去一支军队,如果防御者死亡相等或更大,则攻击者将失去一支军队。
所以如果我运行代码
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)发布于 2016-11-15 14:24:04
在for i in m循环中,i的值是m的内容,而不是m的索引。在您的示例中,第一次通过该循环i是m的第一个值,即3,所以您的条件if n[i] > m[i]正在执行if n[3] > m[3]。3超出了m的指标范围,因此IndexError。
https://stackoverflow.com/questions/40611972
复制相似问题