编写一个python程序来检查给定的正整数是否是2的幂

怎么写呢?……*+-@()×+“,%–_“~;.《……》””

如果一个数是2的幂,那么它的二进制表示中就只有一位1,例如:10000,1000,100等等。所以如果对数字1进行移位操作,总会在移到某个位的时候和这个数相等。这就是移位判断的思想。

def twopower(n):
    res = 1
    while res < n:
        res = res << 1
    if res == n:
        return True
    else:
        return False
    num = int(input("请输入一个正整数:"))
    while num != 0 and num % 2 == 0:
        num = num / 2
    if num == 1:
        print("是2的幂")
    else:
        print("不是2的幂")

两个方法
1.循环从1开始乘以2,直到位数超过输入的数,判断两个数是否相等
2.循环将输入的数除以2,如果最终得1就是2的幂

import math

n = int(input(">>>"))
if n == 2 ** math.log(n, 2):
    print('yes')
else:
    print('no')
    
if bin(n).count('1') == 1:
    print('yes')
else:
    print('no')