python - "Risk"骰子游戏列表索引错误

标签 python python-3.x

我正在尝试创建一个函数,给出风险游戏中掷骰子数量的赢/输比。

对于那些不知道的人来说,在《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 的索引。在您的示例中,第一次循环 im 的第一个值,即 3,因此您的条件 if n[i] > m[ i] 正在执行 if n[3] > m[3]3 超出了 m 的索引范围,因此 IndexError

关于python - "Risk"骰子游戏列表索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40611972/

相关文章:

python反向函数和 boolean 值错误

python-3.x - python : How to compute Jaccard Similarity more quickly

python3 mariadb ssl : The requested data were not available

python - 我将如何在 python 中创建一个(异步/线程/任务)后台队列?

python - 如何更改pyqt5 qwebengineview中html的一部分

python - 选择对象实例化的几种方法之一

python - Pygame - 如何让我的用户更改他们的输入键? (自定义键绑定(bind))

python - 如何将八进制字符串更改为char?

python - `uniq` 用于 2D Theano 张量

python - odoo 域过滤器many2many?