我一直在尝试用我的Python编辑器使用数学库编写这个程序。本质上,我试图让用户输入任何正数,然后给出它们的正数显示2 ^ n的第一个幂的输出,该输出等于或大于它们的输入。 例如,当用户输入256时,我的代码有效,输出变为
" 256.0是大于或等于256"的第一个幂。
然而,当用户输入诸如248之类的数字时,输出变为
" 495.99是大于或等于248"的第一个权力。
这是我不想要的,我需要第一个等于大于248的功率才能显示,因此正确的输出将是
" 256是大于或等于248"的第一个幂。
我已经编写了下面的代码,并打开任何可以改进代码的建议。
import math
number= int(input("Enter any positive integer value greater : "))
assert number >=2, "Number must be greater than or equal to 2"
x=math.log2(number)
y=math.pow(2,x)
print(x)
print(y)
if y == number:
print(y, "is the first power greater than or equal to", number)
elif number != y:
z=x+1
k=math.floor(z)
a=math.pow(2,k)
print(a, "is the first power greater than or equal to", number)
答案 0 :(得分:0)
这是一些让你开始的伪代码:
//n = user input
//int power = 0;
//while(2^power < n){power++}
//output "power" variable to system.
答案 1 :(得分:0)
您需要将z舍入为整数。使用math.floor()。
答案 2 :(得分:0)
问题在于你将2取为非整数的幂,因为你正在做2 ^(x + 1)而x不是整数。你需要将x向上舍入到最接近的整数而不是加1,所以
z = math.ceil(x)
或类似的东西。