猿问

python奇数或偶数函数中的问题。返回 True 不起作用

def is_even(x) :

      while x:

           if x==0:

               return True

           elif x==1:

               return False

           x-=2

print(is_even(5)) 

print(is_even(6))

输出 假 无


如果x==0是替换x==2它工作正常。请解释为什么返回 True 对x==0.


慕无忌1623718
浏览 239回答 3
3回答

慕妹3146593

在最后一次迭代中,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

摇曳的蔷薇

因为当x == 0它未通过您的while x检查时(0 不是真的),所以它会在再次检查您的条件之前退出循环。顺便说一句,检查奇偶校验的正常方法是使用模数 ( %) 运算符。x % 2 == 0  # is_evenx % 2 != 0  # is_odd

慕哥6287543

在 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则上面的语句将返回,如果有。
随时随地看视频慕课网APP

相关分类

Python
我要回答