Python列表中除13和其后的数字之外的数字之和

Python列表中除13和其后的数字之外的数字之和,python,Python,返回数组中数字的总和,空数组返回0。除此之外,数字13是非常不吉利的,所以它不算数,紧跟在13之后的数字也不算数 def sum13(nums): if nums == []: return 0 sum=0 for i in range(len(nums)): if nums[i] == 13: break else: sum = sum+nums[i] return sum 上述代码仅在以下位置失败: sum13[1,2,13,2,1,

返回数组中数字的总和,空数组返回0。除此之外,数字13是非常不吉利的,所以它不算数,紧跟在13之后的数字也不算数

def sum13(nums):
  if nums == []:
    return 0
  sum=0
  for i in range(len(nums)):
    if nums[i] == 13:
      break
  else:
    sum = sum+nums[i]
  return sum
上述代码仅在以下位置失败:

sum13[1,2,13,2,1,13]→ 4而我的答案是3如何4? sum13[13,1,2,13,2,1,13]→ 3虽然我的答案又是0,但如果13之前没有数字,3怎么正确? 请解释一下逻辑和我做错了什么。
紧跟在13后面的数字表示数组中紧跟在13后面的任何数字都将被忽略。例如,在[1,2,13,2,1,13]中,13后面的2会被忽略,但2后面的1会计数。

紧跟在13后面的数字,而不是13后面的所有数字

def sum13nums: 如果nums=[]: 返回0 总和=0 i=0
而我认为当他们达到你们列表中的[前]13位时,你们会怎么做?至于解释逻辑-这是你的逻辑,你应该能够解释它:-嗯,你的程序做你想做的。这个问题是关于演习本身的吗?要么测试数据错误,要么练习题不清楚。返回总和…-你凭什么认为你能指挥我们?你对案例1的结果不是3而是0。@superbrain不,是3。不过我已经找到了解决办法。谢谢!感谢您的解释代码中的一个小更正:在if块中,跳过13后面的数字,它应该是i+=2@BharathKalyan如果设为i+=2,则需要将较低的i+=1放在else中。我特别将它保留为1,因为它已经被添加到底部。这就是评论“这总是增加计数器,但在13日我们现在增加两次”的意思,对吧,对不起。知道了。我用的是for块,你用的是while,这就是为什么我必须把它设为I+=2。@BharathKalyan是的,我通常是for循环类型的人,但根据我的经验,当你开始有更多关于操作计数器的规则时,while循环就更容易了。但实际上,任何一种方法都是有效的。很高兴你成功了。