'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 %2
returnsFalse
或True
,可以理解为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开始)
我 运行 在完成一些编码挑战时浏览了这段代码,但不了解它是如何工作的。我不明白 '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 %2
returnsFalse
或True
,可以理解为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开始)