【问题标题】:Validating an input using a simple while loop使用简单的 while 循环验证输入
【发布时间】:2015-05-05 18:31:18
【问题描述】:

我想使用 while 循环验证输入是否只接受 0 或 1。我想使用布尔“或”,所以当输入不等于 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)"))

等等……

【问题讨论】:

  • 你知道零只是一个零,你永远不会测试零的值。

标签: python validation loops while-loop boolean


【解决方案1】:

将它用于多个值:

while not number1 in (1, 0):

【讨论】:

    【解决方案2】:

    代码:

    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)

    【讨论】:

    • 通常建议不要使用递归 - 虽然它有效,但在输入过多后可能会导致错误
    【解决方案3】:

    其他建议会起作用,但我认为它们不能解决您写的内容为什么不起作用的问题,所以我会尝试回答。

    orand 等布尔运算符用于在 number1 != 1number != 0 等条件之间切换,而不是在 10 等非布尔值之间切换。用英语,你可以写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)。或者,正如其他人建议的那样,您可以编写 if number1 not in (0,1),它更短,并且可以更好地扩展。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2021-05-13
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      相关资源
      最近更新 更多