I ran across this code while doing some coding challenges and don't understand how it is working. I don't understand what the 'eovdedn' part is doing. The challenge was to return odd or even if the number was even or odd.
def isEvenOrOdd(num):
return 'eovdedn'[num % 2::2]
My solution was:
def isEvenOrOdd(num):
return "even" if num%2==0 else "odd"
CodePudding user response:
'eovdedn'[num % 2::2]
That is the syntax for a slice.
num % 2
starts the slice at position 0 or 1 depending if the number is even or odd, and ::2
includes every second character thereafter.
So if the number is even you get e-v-e-n
, and if the number is odd you get -o-d-d
(without the hyphens).
CodePudding user response:
num %2
returns False
or True
, which can be understood as 0 or 1.
Using the slicing notation 'eovdedn'[num % 2::2] we can have the following results:
If num % 2 equals False (0) :
'eovdedn'[0::2]
= even (returns every 2 characters starting from 0)If num % 2 equals True (1) :
'eovdedn'[1::2]
= odd (returns every 2 characters starting from 1)