验证用户输入并循环直到正确

时间:2017-12-08 02:41:51

标签: python-3.x

我在这里寻找一个想法,以循环用户的无效输入,我还没有找到一个。

好的,我知道如何将first_number和second_number循环在一起,但如果需要的话,我对如何单独循环有点困惑。因此,如果用户输入了错误的second_number并再次循环而不是整个事件。

我附上了我需要帮助的部分(是的,这是一项学校作业):

#selectable .ui-selecting { background: #FECA40; }
#selectable .ui-selected { background: #F39814; color: white; }
.ui-draggable, .ui-droppable {background-position: top;}

2 个答案:

答案 0 :(得分:1)

要使用1循环,您可能需要识别差异:

  1. 虽然您可以使用1 list
  2. ,但您可以使用2个简单变量作为结果
  3. 输入字符串几乎相同,除了“第一”和“第二”字。
  4. 概念:

    1. 首先,您需要list
    2. 然后使用for循环使用“first”,然后使用“second”单词。
    3. 然后使用while循环处理输入并使用list扩展回复。在每次良好回复后,使用break退出while循环。
    4. def get_numbers():
          result = []
      
          for item in ("first", "second"):
              while True:
                  try:
                      number = float(input("Please enter the " + item + " number: "))
                  except ValueError:
                      print("Not a valid input, please try again.")
                  else:
                      result += [number]
                      break
      
          return tuple(result)
      

      像你一样以元组的形式返回。

答案 1 :(得分:0)

首先,您要使用两个循环,每个循环一个,如果输入有效则中断,如果输入无效则中断。然后你需要将return语句移动到紧跟第二个循环之后。

顺便说一下,您可以省略first_numbersecond_number的初始分配(下面已注明)。将它们分配给float(input(...))就足够了。

def get_numbers():
    #first_number = 0.0
    #second_number = 0.0

    while True:
        try:
            first_number = float(input("Please enter the first number: "))
            break
        except ValueError:
            print("Not a valid input, please try again.")

    while True:
        try:
            second_number = float(input("Please enter the second number: "))
            break
        except ValueError:
            print("Not a valid input, please try again.")

    return first_number, second_number