2013-12-11 140 views
2

新Python和我只是想知道如何限制用戶輸入,以確保他們進入64位將用戶輸入限制爲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

'+'ve和'-' ve? – thefourtheye

+1

輸入64位是什麼意思?你的意思是一個整數,可以用二進制表示的最多64位?或者一個長度爲64的1和0的二進制串?或者需要*精確* 64位來表示的數字(所以在9223372036854775808和18446744073709551615之間)? –

+0

1和0的長度爲64的二進制字符串:) – user2058186

回答

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') 
5

如何使用int.bit_length方法? (如果你的意思是num整數)

>>> (1).bit_length() 
1 
>>> (2 ** 10).bit_length() 
11 
>>> (1 << 63).bit_length() 
64 

UPDATE

首先使用int將輸入字符串轉換成數(以2爲基)。如果該號碼與領先的零開始

>>> int('000001', 2) 
1 
>>> int('000001', 2).bit_length() 
1 
>>> int('00101', 2) 
5 
>>> int('00101', 2).bit_length() 
3 
+0

感謝您的答覆falsetru!我會給那個去:) – user2058186