用一行代码实现判断一个数是否是2的n次方
程序员文章站
2024-03-15 22:31:06
...
昨天晚上一个朋友问我如何用一行代码判断一个数是否是2的次方数,本来我想用列表生成式去写的,没怼出来(可能是思路不对),然后选择了其他的方法
运行环境:python 3.6.0
方法一:
这是我自己想出来的方法,在这里要借助内置的 math 库的 log方法
import math
n = int(input('>>> '))
print('Yes') if math.log(n, 2) == int(math.log(n, 2)) else print('No')
方法二:
这是我那个同学的思路,但是他没搞出来,他的思路就是用转化成二进制去判断,然后我帮他搞出来了
n = int(input('>>> '))
print(tuple(bin(n))[2:].count('0') == len(tuple(bin(n))[2:])-1)
方法三:
这是我今天早上看见了另外一个同学的朋友圈,他是这么些的
num = int(input())
((num&(num-1)) or print('是2的n次方')) and print('不是2的n次方')
然后我受他的代码启发,写出了如下自我认为更简短的代码
n = int(input('>>> '))
print('No') if n & (n-1) else print('Yes')
哈哈哈,果然是人多办法多,hahaha...
下一篇: 在数组中找到出现次数大于n/k的数