Python计算器 - 输入验证

时间:2017-03-31 14:49:52

标签: python validation input

大家都是这里的Python新手,我刚创建了以下简单的程序,要求输入三个,检查/等待直到这些输入是数字,然后输出它们的总和。

我的问题是:如何让我的代码更紧凑?例如,我只能使用一个代码块而不是三个代码块吗?我可以更聪明地进行输入检查吗?

欢迎任何建议。感谢。

print ("-ADD THREE NUMBERS-")

while True:
    a = input("Please enter a:")
    try:
        a = float(a)
        break
    except ValueError:
        print ("'a' must be a number.")

while True:
    b = input("Please enter b:")
    try:
        b = float(b)
        break
    except ValueError:
        print ("'b' must be a number.")

while True:
    c = input("Please enter c:")
    try:
        c = float(c)
        break
    except ValueError:
        print ("'c' must be a number.")

print(a+b+c)

1 个答案:

答案 0 :(得分:0)

我建议您使用列表来保存所有"变量" (' a'' b'' c')您希望向用户显示。
所以代码变得更加紧凑:

input_requested = ['a', 'b', 'c']
results = []

print ("-ADD THREE NUMBERS-")
for input in input_requested:
    while True:
        user_input = input("Please enter '{}':".format(input))
        try:
            results.append(float(user_input))
            break
        except ValueError:
            print ("'{}' must be a number.".format(input))

print(sum(i for i in results))

输入正确时将其保存在列表中,否则会像代码一样捕获异常。
吃完,为了打印所有输入的总和,你可以使用

sum(i for i in results)

在输入列表上循环并直接对元素求和。