我想解决以下问题:
返回数组中数字的总和,返回0表示空数组.除了数字13是非常不吉利的,因此它不计算在13之后立即出现的数字也不计算.
这就是我所拥有的,这里的想法是13和1(在它之后)被删除然后剩下的数字相加.我遇到的问题是删除部分,实际上并没有删除任何内容.这是语法问题吗?
x = [1,2,2,1,13,1]
def sum13(nums):
for i in nums:
if i == 13:
del nums[i:i+1]
return sum(nums)
print(sum13(x))
20 <-- should be 6
最佳答案 你的问题与索引有关.我是列表中的数字,而不是索引.
这是解决问题的方法:
x = [1,2,2,1,13,1]
def sum13(nums):
for i, num in enumerate(nums):
if num == 13:
del nums[i:i+2] # This removes the index i and the index i+1
return sum(nums)
print(sum13(x))
>>> 6
编辑:
正如Thierry Lathuille在评论中提到的那样,这并没有充分说明你重复’13’的情况.假设您想要这种行为,这里有一种方法可以做到:
def sum13(nums):
for i, num in enumerate(nums):
if num == 13:
stop_cut = i + 1
while nums[stop_cut] == 13:
stop_cut += 1
del nums[i:stop_cut+1]
return sum(nums)