为什么会出现错误:列表索引超出范围

时间:2020-02-19 12:24:16

标签: python

@click="rollDice"

错误是由最后一个def sum13(nums): summ = 0 for i in range(1, len(nums)): if nums[i] != 13 and nums[i-1] != 13: summ += nums[i] if nums[0] != 13: summ += nums[0] return summ 产生的,我不明白为什么

2 个答案:

答案 0 :(得分:4)

这意味着len(nums) == 0。尝试类似

if nums and nums[0] != 13:

答案 1 :(得分:0)

如果您使用Python enumerate(而不是循环计数器)来跟踪数组中的位置,则可以简化代码以使其具有单个if语句,并消除错误的长度。列表为零:

def sum13(nums):
    summ = 0
    for ix, num in enumerate(nums):
        if ix == 0 or (num != 13 and nums[ix-1] != 13):
            summ += num
    return summ

nums为空时,for循环根本不会执行。

由于Python在if语句的评估中使用“提前终止”,这意味着,一旦检测到ix == 0为True,当{ {1}}为0。