【问题标题】:Input Validation redundancy输入验证冗余
【发布时间】:2015-10-23 19:42:58
【问题描述】:

我正在使用异常处理进行输入验证,我的代码可以工作,但它会打印两次错误消息,我无法弄清楚如何使验证循环只打印其中一个错误消息而不是两者。

这是我的代码:

def main():
    low = 0
    high = 10
    get_num_in_range(low,high)

def get_num_in_range (low,high):
    prompt = 'Enter a number between: ' + str(low) + ' and ' + str(high) + ': '
    answer = low-1 #just get me in to loop
    while answer < low or answer > high:
        try:
            answer = int(input(prompt))
        except ValueError:
            print('Invalid data type!')
        if answer < low or answer > high:
            print('Invalid!')
    return answer

main()

输出如下所示:

输入一个介于 0 到 10 之间的数字:a

无效的数据类型!

无效!

输入一个介于 0 到 10 之间的数字:

如何让循环只打印相关的错误信息?

编辑:解决了哈!我是个白痴,我在异常处理程序之外进行了“if”验证。 固定代码:

while answer < low or answer > high:
    try:
        answer = int(input(prompt))
            if answer < low or answer > high:
                print('Invalid!')
    except ValueError:
        print('Invalid data type!')
return answer

【问题讨论】:

    标签: python validation python-3.x exception-handling


    【解决方案1】:

    另一种选择是查看 try-except-else 子句 (https://docs.python.org/2/tutorial/errors.html)。

    while answer < low or answer > high:
        try:
            answer = int(input(prompt))
        except ValueError:
            print('Invalid data type!')
        else:
            if answer < low or answer > high:
                print('Invalid!')
    

    当没有捕获到异常时调用 else 子句

    【讨论】:

    • 哦,我不知道。我正在学习一个非常基础的入门课程,所以这并不奇怪。我会牢记这一点。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2015-02-20
    相关资源
    最近更新 更多