验证用户仅输入0和1的输入

时间:2017-11-14 03:03:40

标签: python-3.x

我必须将8位二进制数转换为十进制数。我相信我的转换是正确的,并验证用户是否输入了一个8位二进制数(不多也不少),但我只是在验证用户的输入只有0和1。

任何帮助都会很棒。我觉得我在思考这个问题,但我尝试了一切。

这是我的代码:

while True:
binary = input("Please enter a 8-bit binary number: ")
if len(binary) < 8 or len(binary) > 8:
    print("Must be an 8 bit binary!")

else:
    print(int(binary, 2))
    break

3 个答案:

答案 0 :(得分:0)

您正在检查长度,但未验证用户输入。例如,

s ='12345678'是您代码的有效输入。

如果你真的想要验证,你可以做一些简单的事情,比如

s1 = '11010101111'

if s1.count('1') + s1.count('0') == len(s1):
    print(int(s1,2))

答案 1 :(得分:0)

如果你是正则表达的粉丝:

import re
s1='10010011'
print(re.match(r'[10]{8}', s1) is None)

这将与10010011匹配,但不会与1100101001234568912345678匹配。

答案 2 :(得分:0)

好的,首先,你要使用这一行:

if len(binary) < 8 or len(binary) > 8:

只是说:

更具可读性
if len(binary) != 8

现在我将如何实现您的代码:

while True:
    binary = input("Please enter a 8-bit binary number: ")

    for item in binary:
        if item not in {'0','1'}:
            print("Must only contains 0's and 1's !")
            break

    if len(binary) != 8:
        print("Must be an 8 bit binary!")

    else:
        print(int(binary, 2))
        break

请注意,这会检查您所期望的两种验证,同时根据用户的具体错误向用户提供相关信息。