我无法弄清楚为什么我的代码无效。问题是:
返回数组中数字的总和,返回0表示空数组。除了数字13是非常不吉利的,因此它不计算在13之后立即出现的数字也不计算。
sum13([1,2,2,1])→6
sum13([1,1])→2
sum13([1,2,2,1,13])→6
我的答案:
def sum13(nums):
count = sum(nums)
for i in range(len(nums)):
if nums[i] == 13:
count = count - 13
count = count - nums[i+1]
return count
def sum13(nums):
count = sum(nums)
for i in range(len(nums)):
if nums[i] == 13:
# count = count - 13
# count = count - nums[i+1]
#print(nums[:i])
count = sum(nums[:i])
return count
删除有问题的元素,然后总结剩下的内容。使用生成器使这非常简单
def remove_13(l):
it = iter(l)
for x in it:
if x == 13:
try:
next(it)
except StopIteration:
return
else:
yield x
def sum13(l):
return sum(remove_13(l))
def sum13(nums):
if 13 in nums:
try:
nums.append(0)
for i in range(len(nums)):
if nums[i] == 13:
nums.remove(nums[i])
nums.remove(nums[i])
return sum13(nums)
except:
return sum(nums)
return sum(nums)
return sum(nums)