I’m new to programming and I’m trying to do the codingbat.com problems to start. I came across this problem:
Given an array calculate the sum except when there is a 13 in the array. If there is a 13 in the array, skip the 13 and the number immediately following it. For example [1,2,13,5,1] should yield 4 (since the 13 and the 5s are skipped).
This is what I have so far. My problem is that I don’t know what to do when there are multiple 13s…And I would like to learn coding efficiently. Can you guys help? (I’m using python 3.2) Thanks!
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)
One tricky thing to notice is something like this: [1, 13, 13, 2, 3]
You need to skip
2tooExplanation:
You go through the items in the list one by one
Each time you
skipasTrue, so that you can also skip next item.skipisTrue, if it is, which means it’s a item right after 13, so you need to skip this one too, and you also need to setskipback toFalseso that you don’t skip next item.sum