The Question:
Return the sum of the numbers in the array, returning 0 for an empty array. Except the number 13 is very unlucky, so it does not count and numbers that come immediately after a 13 also do not count.
My Code:
def sum13(nums): l = len(nums) tot = 0 if l==0: return 0 for x in range(l): if nums[x]!=13: if nums[x-1]!=13: tot+=nums[x] return tot
Where It’s Failing:
sum13([1, 2, 2, 1, 13]) should → 6, but my code is outputting 5 sum13([1, 2, 13, 2, 1, 13]) should → 4, but my code is outputting 3
Advertisement
Answer
Your problem is when x
is zero. x - 1
will be -1
so it will get the last element of your list (13
). To fix it, don’t test x - 1
if x
is zero:
if x == 0 or nums[x-1] != 13:
In Python, when you pass a negative index to a list it accesses its elements backwards, so:
>>> x = [1,2,3,4,5] >>> x[-1] 5 >>> x[-2] 4