鱼C论坛

 找回密码
 立即注册
查看: 1749|回复: 3

[已解决]返回奇数或偶数的问题

[复制链接]
发表于 2023-6-7 23:55:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def a(x):
        if x % 2:
                return x
        else:
                return None

两个问题:

1、上面的函数实现奇数才返回,偶数返回None,None算不算返回值?

2、对if x % 2不理解,奇数不应该是if x % 2 == 1吗?
最佳答案
2023-6-7 23:56:50
1. 在上面的函数中,如果输入的数字 x 是奇数,则函数会返回 x,否则会返回 None。在 Python 中,None 是一个特殊的对象,表示空值或者没有值。因此,可以说 None 是一个返回值,但它表示的是没有有效的返回值。

2. 在 Python 中,对一个整数进行取模运算(使用 % 符号)时,结果的符号与被取模数的符号相同。因此,对于正数来说,奇数的余数是 1,偶数的余数是 0。所以,条件  if x % 2  实际上是在判断 x 是否为奇数。如果 x 是奇数,条件为真,返回 x;如果 x 是偶数,条件为假,执行  else  分支,返回 None。这种写法是合法的,并且在 Python 中常见。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-7 23:56:50 | 显示全部楼层    本楼为最佳答案   
1. 在上面的函数中,如果输入的数字 x 是奇数,则函数会返回 x,否则会返回 None。在 Python 中,None 是一个特殊的对象,表示空值或者没有值。因此,可以说 None 是一个返回值,但它表示的是没有有效的返回值。

2. 在 Python 中,对一个整数进行取模运算(使用 % 符号)时,结果的符号与被取模数的符号相同。因此,对于正数来说,奇数的余数是 1,偶数的余数是 0。所以,条件  if x % 2  实际上是在判断 x 是否为奇数。如果 x 是奇数,条件为真,返回 x;如果 x 是偶数,条件为假,执行  else  分支,返回 None。这种写法是合法的,并且在 Python 中常见。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-8 00:26:09 | 显示全部楼层
isdkz 发表于 2023-6-7 23:56
1. 在上面的函数中,如果输入的数字 x 是奇数,则函数会返回 x,否则会返回 None。在 Python 中,None 是一 ...

感谢大神指点。

……结果的符号与被取模数的符号相同。因此,对于正数来说,奇数的余数是 1,偶数的余数是 0。

红色字体没看懂……

后面的因此的因果关系没弄明白……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-8 00:26:52 | 显示全部楼层
lzb1001 发表于 2023-6-8 00:26
感谢大神指点。

……结果的符号与被取模数的符号相同。因此,对于正数来说,奇数的余数是 1,偶数的余 ...

非常抱歉给你带来困惑。我在解释取模运算时可能表达不够清晰。让我重新解释一下。

在 Python 中,取模运算(使用 % 符号)的结果是余数。当对一个正数进行取模运算时,余数的符号与被取模数的符号相同。也就是说,如果被取模数是正数,那么余数也是正数;如果被取模数是负数,那么余数也是负数。

对于奇数和偶数来说,它们的符号是相同的(都是正数),因此在取模运算中,奇数的余数是 1,而偶数的余数是 0。这是因为奇数可以表示为 2n + 1 的形式,其中 n 是整数,所以奇数除以 2 的余数是 1;而偶数可以表示为 2n 的形式,所以偶数除以 2 的余数是 0。

所以,当判断一个数 x 是否为奇数时,可以通过判断 x % 2 的结果是否为 1,因为只有奇数的余数是 1,而偶数的余数是 0。这就是为什么在代码中使用  if x % 2  来判断 x 是否为奇数。如果条件为真,则说明 x 是奇数;如果条件为假,则说明 x 是偶数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 21:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表