lzb1001 发表于 2023-6-7 23:55:26

返回奇数或偶数的问题

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

两个问题:

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

2、对if x % 2不理解,奇数不应该是if x % 2 == 1吗?

isdkz 发表于 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 中常见。

lzb1001 发表于 2023-6-8 00:26:09

isdkz 发表于 2023-6-7 23:56
1. 在上面的函数中,如果输入的数字 x 是奇数,则函数会返回 x,否则会返回 None。在 Python 中,None 是一 ...

感谢大神指点。

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

红色字体没看懂……

后面的因此的因果关系没弄明白……

isdkz 发表于 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 是偶数。
页: [1]
查看完整版本: 返回奇数或偶数的问题