Python的新手,我只是想知道如何限制用户输入以确保它们输入64位
目前我已经有了这段代码
while True:
num = input('Please enter 64-bits')
if len(num=4)
print ('Accepted')
break
else:
print ('Not Accepted, try again')
我知道第3行是错误的,但我很确定我必须以某种方式使用len,非常感谢任何帮助,谢谢!
答案 0 :(得分:5)
使用int.bit_length
方法怎么样? (如果你的意思是num
是整数)
>>> (1).bit_length()
1
>>> (2 ** 10).bit_length()
11
>>> (1 << 63).bit_length()
64
<强>更新强>
首先使用int
将输入字符串转换为数字(以2为基数)。
>>> int('000001', 2)
1
>>> int('000001', 2).bit_length()
1
>>> int('00101', 2)
5
>>> int('00101', 2).bit_length()
3
答案 1 :(得分:1)
如果数字以前导零开头并且你想接受它作为有效输入,那么来自falsetru的answer将不起作用。
您可能希望使用raw_input
而不是input
- 这样您就可以获得用户输入的原始字符串。然后,除了使用int(<x>, 2)
转换数字之外,您还可以轻松测试该字符串的长度。像这样的东西,例如:
while True:
raw = raw_input('Please enter 64 bits: ')
try:
num = int(raw,2)
except ValueError:
print("Not a valid binary number")
continue
if len(raw)==64:
print ('Accepted')
break
else:
print ('Not Accepted, need exactly 64 bits. Try again')