Python 出现错误的原因:列表索引超出范围 def sum13nums: 总和=0 对于范围1中的i,lennums: 如果nums[i]!=13和nums[i-1]!=13: 总和+=nums[i] 如果nums[0]!=13: 总和+=nums[0] 返回总和

Python 出现错误的原因:列表索引超出范围 def sum13nums: 总和=0 对于范围1中的i,lennums: 如果nums[i]!=13和nums[i-1]!=13: 总和+=nums[i] 如果nums[0]!=13: 总和+=nums[0] 返回总和,python,Python,这个错误是由最后一个if产生的,我不明白为什么这意味着lennums==0。试试像这样的东西 如果nums和nums[0]!=13:这意味着lennums==0。试试像这样的东西 如果nums和nums[0]!=13:如果使用Python enumerate而不是循环计数器来跟踪您在数组中的位置,则可以简化代码,使其具有单个If语句,并在列表长度为零时消除错误: def sum13nums: 总和=0 对于ix,枚举nums中的num: 如果ix==0或num!=13和nums[ix-1]!=1

这个错误是由最后一个if产生的,我不明白为什么这意味着lennums==0。试试像这样的东西

如果nums和nums[0]!=13:

这意味着lennums==0。试试像这样的东西

如果nums和nums[0]!=13:

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

def sum13nums: 总和=0 对于ix,枚举nums中的num: 如果ix==0或num!=13和nums[ix-1]!=13: 总和+=num 返回总和 当nums为空时,for循环根本不会执行

因为Python在计算if语句时使用“提前终止”,这意味着一旦它检测到ix==0为真,当ix为0时,它就不会计算nums[ix-1]。如果使用Python enumerate而不是循环计数器来跟踪您在数组中的位置,则可以简化代码,使其具有单个if语句,如果列表长度为零,则消除错误:

def sum13nums: 总和=0 对于ix,枚举nums中的num: 如果ix==0或num!=13和nums[ix-1]!=13: 总和+=num 返回总和 当nums为空时,for循环根本不会执行


因为Python在计算if语句时使用“提前终止”,这意味着一旦检测到ix==0为真,当ix为0时,它就不会计算nums[ix-1]。

nums是什么样子的?nums为空。您决定不共享错误中给出的所有信息是有原因的吗?sum13[1,2,2,1]@Sayse这是我得到的唯一错误列表索引超出范围,但当我删除最后一个if编译first check print lennums时-可能您得到0,所以列表为空,无法得到第一个元素nums[0]因为它不存在——而您得到错误是因为您试图获取不存在的元素。顺便说一句:如果你在循环中添加print,它将不会打印它,因为它从不执行这个循环-range1,0不会执行循环-所以它从不尝试使用nums[i],也不会引发错误。你的nums看起来如何?nums是空的。您决定不共享错误中给出的所有信息是有原因的吗?sum13[1,2,2,1]@Sayse这是我得到的唯一错误列表索引超出范围,但当我删除最后一个if编译first check print lennums时-可能您得到0,所以列表为空,无法得到第一个元素nums[0]因为它不存在——而您得到错误是因为您试图获取不存在的元素。顺便说一句:如果在循环中添加“打印”,它将不会打印它,因为它从不执行此循环-range1,0不会执行循环-因此它从不尝试使用nums[i],也不会引发错误。这意味着boolnums为true,这意味着nums在您的情况下不是空列表,nums[0]!=13也是如此。请注意,条件的顺序很重要。这意味着boolnums为true,这意味着nums在您的情况下不是空列表,nums[0]!=13也是如此。注意,条件的顺序很重要。哇,我不知道枚举函数。谢谢你的回答,大卫!哇,我不知道枚举函数谢谢你的回答,大卫!