【问题标题】:Restricting user input to 64 bits?将用户输入限制为 64 位?
【发布时间】:2013-12-29 12:45:15
【问题描述】:

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

【问题讨论】:

  • 输入64位是什么意思?您的意思是可以使用最多 64 位以二进制表示的整数?还是长度为 64 的 1 和 0 的二进制字符串?还是一个需要正好 64 位来表示的数字(所以在 9223372036854775808 和 18446744073709551615 之间)?
  • 长度为 64 的 1 和 0 的二进制字符串 :)
  • 你已经知道len,有什么问题?
  • @thg435 只是弄清楚如何将长度设置为等于 64
  • @user2058186:你不需要设置它,只要检查它是否等于64。

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


【解决方案1】:

使用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

【讨论】:

  • 感谢虚假的回复!我会试一试:)
【解决方案2】:

如果数字以前导零开头并且您希望将其作为有效输入接受,则来自 falsetru 的 answer 将不起作用。

您可能希望使用raw_input 而不是input——这样您将获得用户输入的原始字符串。然后您可以轻松测试该字符串的长度,此外还可以使用int(&lt;x&gt;, 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')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2010-11-12
    • 2019-03-16
    • 2017-04-07
    • 1970-01-01
    相关资源
    最近更新 更多