3 回答
TA贡献1820条经验 获得超9个赞
在最后一次迭代中,x减少到0所以while不进入循环,并终止函数。由于它没有显式返回任何内容,因此它隐式返回None,这是一个 false-y。
您可以if在while循环内使用单个并使用while's 条件本身来指示偶数:
def is_even(x) :
while x:
if x==1:
return False
x-=2
return True
TA贡献1793条经验 获得超6个赞
因为当x == 0它未通过您的while x检查时(0 不是真的),所以它会在再次检查您的条件之前退出循环。
顺便说一句,检查奇偶校验的正常方法是使用模数 ( %) 运算符。
x % 2 == 0 # is_even
x % 2 != 0 # is_odd
TA贡献1831条经验 获得超10个赞
在 Python 中,整数有True
和False
值。任何不是的整数0
,将始终求值True
,0
并将求值False
。
在您的代码中,您使用了一个while
循环,该循环仅在后续语句计算为 时运行True
。检查时while x
,如果的值x
是0
(由于循环内部的计算),则您的语句将与 相同while False
,不会运行内部代码。
为避免此问题,您可以使用该modulo
操作,它为您提供操作的其余部分。因此,x % 2
将返回0
,如果x
是偶数,1
如果是奇数。您可以进行检查并使用更少的操作在更少的行中返回正确的值。
return (x % 2 == 0)
True
如果没有余数,False
则上面的语句将返回,如果有。
添加回答
举报