oliver Bergman - 1 month ago 5x
Python Question

# Python3 for-loop even or odd

Hi i got stuck in an exercise i have in school. and could use some help.

Create a for-loop that goes through the numbers:

``````67,2,12,28,128,15,90,4,579,450
``````

If the current number is even, you should add it to a variable and if the
current number is odd, you should subtract it from the variable.

Here is my code so far.

``````def listnum(a):
for num in [67, 2, 12, 28, 128, 15, 90, 4, 579, 450]:
if (num%2):
a = a + num
else:
a = a - num
return a
``````

when i run this program i get the answer:

``````5.6 FAIL.
You said:
4 class 'int'>
``````

`53`
if initial value of
`a`
is
`0`
.

can any one help me and tell what im doing wrong?
or maybe point me in the right direction.
thank you!

I think it would make more sense if your function input is the list and not the return value. Also (as others have noted) you need `num % 2 == 0`, and your indentation is not quite right. Try this instead:

``````def listSum(l):
ans = 0
for num in l:
if num % 2 == 0:
ans += num
else:
ans -= num
return ans
``````

Note that you could do this in a single line:

``````def listSum(l):
return sum(i if i % 2 == 0 else -i for i in l)
``````

`print(listSum([67, 2, 12, 28, 128, 15, 90, 4, 579, 450]))` prints `53` in both cases.

Source (Stackoverflow)