how to check if an input is valid before printing?
本问题已经有最佳答案,请猛点这里访问。
假设我希望用户输入一个介于1和50之间的数字,那么我会这样做:
1 | num = input("Choose a number between 1 and 50:") |
但如果用户输入的数字不在1到50之间,我希望它打印:
Choose a number between 1 and 50: invalid number
我该怎么做?
您需要将输入设置为整数,否则它将是一个字符串:
1 | num = int(input("Choose a number between 1 and 50:")) |
检查num设置为:
1 2 3 4 | if 1 < num < 50: print(1) else: print("invalid number") |
1 2 3 4 5 6 7 8 | num = input("Choose a number between 1 and 50:") try: num = int(num) #Check if user input can be translated to integer. Otherwise this line will raise ValueError if not 1 <= num <= 50: print('Choose a number between 1 and 50: invalid number') except ValueError: print('Choose a number between 1 and 50: invalid number') |
我可以这样做:
1 2 3 4 5 6 7 8 9 10 | validResponse = False while(not validResponse): try: num = int(input("Choose a number between 1 and 50:")) if(1 <= num <= 50): validResponse = True else: print("Invalid number.") except ValueError: print("Invalid number.") |
这是,如果您想提示他们直到输入正确的数字。否则,可以放弃while循环和validResponse变量。
Try将运行该语句,直到遇到错误为止。如果错误是特定的数字不能作为整数进行插入,那么它将引发一个valueerror异常,except语句将告诉程序在这种情况下应该做什么。在这种情况下,任何其他形式的错误仍然会按照您的需要结束程序,因为这里唯一可接受的错误类型是valueerror。但是,在try语句之后可以有多个except语句来处理不同的错误。
除了上述答案之外,您还可以使用断言。在调试和测试时,您可能会更多地使用这些。如果失败,它将抛出一个
1 2 3 4 5 6 7 | num = input('Choose a number between 1 and 50') # try entering something that isn't an int assert type(num) == int assert num >= 1 assert num <= 50 print(num) |
您可以使用
1 2 3 4 5 | num = input('Choose a number between 1 and 50') if type(num) == int: # if the input isn't an int, it won't print if num >= 1 and num <= 50: print(num) |
默认情况下,提供的输入将是字符串。您可以在输入上调用内置函数
1 | num = int(input('Choose a number between 1 and 50')) |
您还可以实现错误处理(如Moonsik Park和Ethan Thomas的答案所示)。