【发布时间】:2015-07-17 06:11:39
【问题描述】:
这是一个简单的问题,但我被困住了。
我正在编写一个简单的程序来获取一个输入值,该值是2 的不同倍数。也就是说,它必须是2^x 的形式,包括1,即2^0=1。
所以,唯一有效的输入是1, 2, 4, 8, 16, 32, 等。如果用户输入3,我的程序会抛出错误。我还将输入从1 限制为8192(其中8192 = 2**13)。如果用户输入10000 或-3 或0,我会抛出一个错误。
这是我目前所拥有的。
def checkValue():
maxValue = 8192
while True:
try:
intValue = int(input('Please enter integer: '))
except ValueError:
print("Value must be an integer!")
continue
else:
if intValue < 1:
print("Value cannot be less than 1")
continue
elif intValue > 8192:
print("Value cannot be greater than 8192")
continue
else:
return("The value is equal to " + str(intValue) )
必须有一种简单的方法来测试输入是否为2 的幂。不过,我不确定如何在我当前的代码中加入这样的测试。由于我只接受 14 值作为有效输入(即 1 和高达 2**13 的值),也许这是最有效的测试?
感谢任何建议。谢谢。
【问题讨论】: