我想验证输入只使用while循环接受0或1。我想使用布尔“OR”,因此当输入不等于1或0时,打印错误并坚持用户重新输入值。如果是,请继续使用代码,以便用户可以输入其余数据。
以下代码在输入1时有效,但在第二种情况下无效(在本例中为0),无论条件是什么。
number1=int(input("enter the your number)"))
while number1 !=1 or 0:
print ("You must enter a BINARY number")
number1=int(input("enter you first binary digit (from the right)"))
number2=int(input("enter the next (from the right)"))
while number2 !=1 or 0:
print ("You must enter a BINARY number")
number2=int(input("enter you second binary digit (from the right)"))
依旧......
答案 0 :(得分:1)
使用此代替多个值:
while not number1 in (1, 0):
答案 1 :(得分:1)
其他建议可行,但我不认为它们解决了为什么你所写的不起作用的问题,所以我会尝试回答这个问题。
or
和and
之类的布尔运算符适用于number1 != 1
和number != 0
之间的条件,而不是1
和{}之类的非布尔值。 {1}}。在英语中,你可以写0
人们会理解你的意思是if number1 is not 1 or 0
,但它在任何编程语言中都不会那样。
所以你可以写if number1 is not 1 and number1 is not 0
或者你可以写if number1!=1 and number1!=0
。或者,正如其他人所建议的那样,你可以写if not (number1==1 or number1==0)
,它更短,可以更好地扩展。
答案 2 :(得分:0)
<强>代码:强>
number1 = int(raw_input("Enter your number: "))
while number1 not in (0,1):
print("You must enter a binary number.")
number1 = int(raw_input("Enter your number: "))
number2 = int(raw_input("Enter your second number: "))
while number2 not in (0,1):
print("You must enter a binary number")
number2 = int(raw_input("Enter your second number: "))
print(number1, number2)
<强>输出:强>
输入您的电话号码:3
您必须输入二进制数。
输入您的电话号码:1
输入您的第二个号码:7
您必须输入二进制数
输入您的第二个号码:0
(1,0)