math.log的问题

时间:2015-03-01 20:40:25

标签: python math

我一直在尝试用我的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)

3 个答案:

答案 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)

或类似的东西。