【发布时间】:2018-10-04 14:38:08
【问题描述】:
任务:
返回数组中数字的总和,对于空数组返回 0。除了数字 13 很不吉利,所以它不算数,紧跟在 13 之后的数字也不算数。
测试样本,预期:
- sum13([1, 2, 13, 2, 1, 13]) → 4
- sum13([1, 2, 2, 1, 13]) → 6
我的代码产生以下结果:
#sum13([1, 2, 13, 2, 1, 13]) → 3
#sum13([1, 2, 2, 1, 13]) → 5
def sum13(nums):
s = 0
if not nums:
return 0
for i in range(len(nums)):
if nums[i]==13 or nums[i-1]==13:
s += 0
else:
s += nums[i]
return s
为什么它不计算最后 13 num 之前的数字?
更新:
感谢cmets,了解问题。正确如下:
def sum13(nums):
s = 0
if not nums:
return 0
for i in range(len(nums)):
if nums[i]==13 or (nums[i-1]==13 and i-1>=0):
s += 0
else:
s += nums[i]
return s
【问题讨论】:
-
第一次迭代中
i的值是多少? -
理解错误,谢谢!
标签: python-3.x list loops