Home > database >  What is 'eovdedn' doing in this function?
What is 'eovdedn' doing in this function?

Time:05-03

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)

  • Related