二进制输入的用户验证循环无法识别输入

时间:2018-09-22 04:28:33

标签: python-3.x

是编程的新手,但我正在使用二进制到十进制转换器,并且我试图确保唯一的输入是'0'或'1'而不是alpha,并且不为空”。

我已经弄清楚了非空和非alpha输入的逻辑,但是我无法弄清楚最后一个条件的逻辑-如果1不是字符串或0不是字符串。如果我输入1或零,它会起作用,但这不是我想要的。我只想检查是否只有1或0,然后继续执行程序的其余部分。

我今天已经花了几个小时,因此能提供任何帮助。 :)

预先感谢:)

def convert_to_decimal(binary_number):
    print('\n')
    #The binary input to be converted, entered as a string.
    binary = input('Please enter binary numbera: ')
    while binary.isalpha() or binary == '':
        print("Please make sure your number contains digits 0-1 only.a ")
        binary = input('Please enter numberb: ')
    while binary not in '1' and binary not in '0':
        print("Please make sure your number contains digits 0-1 only.x ")
        binary = input('Please enter numberc: ')

2 个答案:

答案 0 :(得分:1)

在这里,我对其进行了一些重做,但效率有些低下,但是在这里。这有点不言而喻,但是基本上它是如何工作的,是否在inputString上进行迭代,并检查每个数字是否为1或0(如果不是),则继续询问,否则继续。

def isBinary(stringNum):
    if len(stringNum) ==0:
        return False
    for chr in stringNum:
        if chr != "0" and chr != "1":
            return False
    return True
def convert_to_decimal():
    print('\n')
    #The binary input to be converted, entered as a string.
    binary = input('Please enter binary number: ')
    while not isBinary(binary):
        binary = input('Please enter binary number: ')

您的计算机不工作的原因是您说不是1也不是0,这是错误的。如果WHOLE字符串在target(“ 0”)中,则in在这种情况下返回True。由于“ 10”不是完全以1或0表示,它会再次询问您,因此您可以看到为什么这样不起作用。

答案 1 :(得分:0)

我讨厌自己找到答案,但这很有效:)

def convert_to_decimal(binary_number):
    print('\n')
    #The binary input to be converted, entered as a string.
    binary = input('Please enter binary numbera: ')
    while binary.isalpha() or binary == '':
        print("Please make sure your number contains digits 0-1 only.a ")
        binary = input('Please enter numberb: ')
    while not binary.startswith('0') and not binary.startswith('1'):
        print("Please make sure your number contains digits 0-1 only.x ")
        binary = input('Please enter numberc: ')