'eovdedn' 在这个函数中做了什么?

What is 'eovdedn' doing in this function?

我 运行 在完成一些编码挑战时浏览了这段代码,但不了解它是如何工作的。我不明白 'eovdedn' 部分在做什么。挑战是return奇数还是偶数。

def isEvenOrOdd(num):
    return 'eovdedn'[num % 2::2]

我的解决方案是:

def isEvenOrOdd(num):
    return "even" if num%2==0 else "odd"
'eovdedn'[num % 2::2]

这是 slice 的语法。

num % 2 从位置 0 或 1 开始切片,具体取决于数字是偶数还是奇数,并且 ::2 包括此后的每个第二个字符。

因此,如果数字是偶数,您将得到 e-v-e-n,如果数字是奇数,您将得到 -o-d-d(没有连字符)。

num %2returnsFalseTrue,可以理解为0或1。

使用切片符号'eovdedn'[num % 2::2]我们可以得到以下结果:

  • 如果 num % 2 等于 False (0) :
    'eovdedn'[0::2] =偶数(returns每2个字符从0开始)

  • 如果 num % 2 等于 True (1) :
    'eovdedn'[1::2] = 奇数(returns 每2个字符从1开始)