我是编程新手,我正在尝试解决codingbat.com 问题。我遇到了这个问题:
给定一个数组,计算总和,除非数组中有 13。如果数组中有 13,则跳过 13 和紧随其后的数字。例如 [1,2,13,5,1] 应该产生 4(因为 13 和 5 被跳过)。
这是我到目前为止所拥有的。我的问题是,当有多个 13 时我不知道该怎么办......而且我想有效地学习编码。你们能帮忙吗? (我使用的是python 3.2)谢谢!
def pos(nums):
for i in nums:
if i == 13:
return nums.index(13)
return False
def sum13(lis):
if pos(lis)!= False:
return sum(lis[:pos(lis)])+sum(lis[pos(lis)+1:])
else:
return sum(lis)
需要注意的一件棘手的事情是这样的:[1, 13, 13, 2, 3]
你需要跳过2
too
def getSum(l):
sum = 0
skip = False
for i in l:
if i == 13:
skip = True
continue
if skip:
skip = False
continue
sum += i
return sum
解释:
您一项一项地浏览列表中的项目
每次你
- 首先检查是否是13,如果是,则标记
skip
as True
,这样您也可以跳过下一项。
- 其次,你检查是否
skip
is True
,如果是的话,说明是13之后的一项,所以也需要跳过这一项,并且还需要设置skip
回到False
这样您就不会跳过下一项。
- 最后,如果不是上述两种情况,则将该值添加到
sum
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)