如何在打印前检查输入是否有效?

时间:2018-11-04 00:12:10

标签: python input

假设我希望用户输入1到50之间的数字,所以我这样做:

num = input("Choose a number between 1 and 50: ")

但是,如果用户输入的数字不在1到50之间,我希望它打印出来:

  

选择1到50之间的数字:无效数字

我该怎么做?

4 个答案:

答案 0 :(得分:1)

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 :(得分:1)

您需要将输入设置为整数,因为否则它将是字符串:

num = int(input("Choose a number between 1 and 50: "))

检查已设置的数字:

if 1 < num < 50:
    print(1)
else:
    print("invalid number")

答案 2 :(得分:0)

除了以上答案外,您还可以使用断言。您可能会更多地使用这些,以便在调试和测试时使用。如果失败,它将抛出一个AssertionError

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)

您可以使用if语句,但是您需要先将输入分配给变量,然后然后在条件中包含该变量。否则,您将无任何评估。

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) 

默认情况下,提供的输入将是字符串。您可以在输入上调用内置函数int()并将其强制转换为类型int。如果用户输入的内容不是ValueError,它将抛出int

num = int(input('Choose a number between 1 and 50'))

您还可以实现错误处理(如Moonsik Park和Ethan Thomas的答案所示)。

答案 3 :(得分:0)

这就是我可能要做的事情:

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变量。

尝试将运行该语句,直到遇到错误为止。如果错误特别是该数字不能被整数化,则将引发ValueError异常,except语句将告诉程序在这种情况下该怎么做。在这种情况下,任何其他形式的错误仍然可以根据需要结束程序,因为这里可接受的错误的唯一类型是ValueError。但是,在try语句之后可以有多个except语句来处理不同的错误。