[Tutor] Question related to for loops

Peter Otten __peter__ at web.de
Fri Mar 19 13:04:51 EDT 2021


On 19/03/2021 16:55, Manprit Singh wrote:
> Dear sir ,
>
> consider a problem of finding sum of even and odd numbers inside a list..
> One can write a function like this :
>
> def odd_evensum(x):
>      odd, even = 0, 0
>      for i in x:
>          if i%2 != 0:
>              odd = odd + i
>          else:
>              even = even + i
>      return odd, even
>
> In an other way if i write the same function like this :
> def odd_evensum(x):
>      odd = sum(i for i in x if i%2 != 0)
>      even = sum(i for i in x if i%2 == 0)
>      return odd, even
>
> what should be preferred?

The first version because it is more likely to produce the correct output.

I would clean up it a bit though:

def odd_evensum3(x):
     odd = 0
     even = 0
     for i in x:
         if i % 2:
             odd += i
         else:
             even += i
     return odd, even


For bonus points: can you come up with an argument that would return

(4, 2)

for the first version of odd_evensum() and

(4, 0)

for the second?


More information about the Tutor mailing list