python奇数和_请问python如何判断奇偶数?

odd 代表奇数, even 代表偶数, 下面代码全部使用is_odd, 判断输入的值是不是奇数, 是奇数返回True, 否则返回False

最常用的办法就是直接取模判断:

def is_odd(n):

# 余数是 1 就是奇数, 否则是偶数

return n % 2 == 1

当然也可以用位运算, 这里需要知道的是, 一个十进制表示的数字如果是奇数的话, 在二进制下最后一位一定是 1, 否则最后一位是 0, 举个例子, 3 在二进制里面是0011, 4 在二进制里是0100

所以可以用与门(&), 然后和 1 比较:

def is_odd(n):

# 比如 4 & 1 (0100 & 0001) => 0

return bool(n & 1)

也可以用异或门(^), 这个运算符的比较方法是两个二进制数字某个位不同时返回 1, 否则返回 0. 所以比较有意思的地方就是二进制(0 或 1)下的一个数字x, 和 0 进行异或门运算一定返回x, 和 1 进行异或门运算一定返回的是本身取反!x. 所以我们可以直接拿一个数和 1 进行异或门运算, 前面一定不变, 就看最后一位, 偶数就是从 0 变成 1, 整体数字就是加一, 奇数就是从 1 变成 0, 整体数字就是减一:

def is_odd(n):

# 比如 3 & 1 (0011 & 0001) => 0010

return n ^ 1 == n - 1

还可以用位运算符, >>右移运算符和<<左移运算符, 和 1 进行操作, 右移相当于除以 2 取商(或者叫向下取整) , 左移就是乘以 2, 这里不展开

def is_odd(n):

# 比如 (5 >> 2) << 2 => 4, 所以用原来的数减去结果要么是 1 要么是 0

return bool(n - ((n >> 1) << 1))

或者用一些奇淫技巧, 比如下面这种:

def is_odd(n):

# 奇数返回 -1, 偶数返回 1

return (-1)**n == -1

总之方法一堆...但是第一个取模应该最常用吧, 后面几个知道理解就行, 平时还是少些那种代码...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值