如何在Python中验证用户输入是浮点数还是给定范围?

时间:2016-09-14 11:34:07

标签: python python-3.x

我正在尝试验证用户输入以检查它是否都是数字(浮点数)和范围内(0-1)。我使用了Try除了检查输入是否是浮点数,如下所示:

while True:
    try:
        rate=input(": ")
        rate=float(rate)
        break
    except ValueError:
        print("That was not a valid numerical value, please try again")

这适用于检查输入是否为数字(浮动被接受)但是我不能检查它的数字和范围(0,1)是否需要将速率返回到我的主代码。

我能够验证输入是否在一个范围内我只是无法弄清楚如何进行两个检查,以便例如如果用户输入3.8他们得到和错误消息,并且如果他们能够重新输入然后放一个字符串,它不会使代码崩溃。

1 个答案:

答案 0 :(得分:3)

您可以考虑以下列方式使用try-except-else

min_val = 1
max_val = 10
while True:
    rate = input(": ")
    try:
        rate = float(rate)
    except ValueError:
        print("That was not a valid numerical value, please try again")
    else:
        if min_val < rate < max_val:
            break
        else:
            print("This number is not in the required range")

这将要求输入为min_val < rate < max_val范围内的数字。请注意,仅当未引发else时才会执行exception块。

另一种方法是使用已经捕获的ValueError来提升你自己:

min_val = 1
max_val = 10
while True:
    rate = input(": ")
    try:
        rate = float(rate)
        if not min_val < rate < max_val:
            raise ValueError
    except ValueError:
        print("That was not a valid numerical value, please try again")
    else:
        break