将用户输入限制为64位?

时间:2013-12-11 13:50:28

标签: python loops if-statement while-loop string-length

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,非常感谢任何帮助,谢谢!

2 个答案:

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