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则上面的语句将返回,如果有。
添加回答
举报
