而True:试试:除了ValueError:

问题描述

我想做一个这样的功能

while True:
    try:
        x = int(input("Please enter a number 1 - 5: "))
        print (x)
    except ValueError:
        print "Oops!  That was not a valid number. Try again..."

但是我如何确保只有在x介于0到6之间时才会打印“ x”。

解决方法

如果要保留异常流,可以在用户输入无效值时引发异常。

while True:
    try:
        x = int(input("Please enter a number 1 - 5: "))
        if x < 1 or x > 5:
            raise ValueError('Input not valid')   # go to except block
        print (x)
    except ValueError:
        print ("Oops!  That was not a valid number. Try again...")

您还可以编写循环而不会引发异常:

while True:
    x = int(input("Please enter a number 1 - 5: "))
    if x < 1 or x > 5:
        print ("Oops!  That was not a valid number. Try again...")
        continue  # skip print 
    print (x)