欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用一行代码实现判断一个数是否是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...