首页 > 解决方案 > 而真:尝试:除了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-loopexcept

解决方案


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

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)

推荐阅读