为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕无忌1623718 2021-07-16 18:01:15
def is_even(x) :      while x:           if x==0:               return True           elif x==1:               return False           x-=2print(is_even(5)) print(is_even(6))输出 假 无如果x==0是替换x==2它工作正常。请解释为什么返回 True 对x==0.
查看完整描述

3 回答

?
慕妹3146593

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


查看完整回答
反对 回复 2021-07-27
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

因为当x == 0它未通过您的while x检查时(0 不是真的),所以它会在再次检查您的条件之前退出循环。


顺便说一句,检查奇偶校验的正常方法是使用模数 ( %) 运算符。


x % 2 == 0  # is_even

x % 2 != 0  # is_odd


查看完整回答
反对 回复 2021-07-27
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

在 Python 中,整数有TrueFalse值。任何不是的整数0,将始终求值True0并将求值False

在您的代码中,您使用了一个while循环,该循环仅在后续语句计算为 时运行True。检查时while x,如果的值x0(由于循环内部的计算),则您的语句将与 相同while False,不会运行内部代码。

为避免此问题,您可以使用该modulo操作,它为您提供操作的其余部分。因此,x % 2将返回0,如果x是偶数,1如果是奇数。您可以进行检查并使用更少的操作在更少的行中返回正确的值。

return (x % 2 == 0)

True如果没有余数,False则上面的语句将返回,如果有。


查看完整回答
反对 回复 2021-07-27
  • 3 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信