学习 Python:为什么在使用 try 和 except 时会发生这种情况以及如何修复它?

问题描述 投票:0回答:1

我编写了以下程序来计算超过 40 小时的工资加上时间半。我知道这不是最简单的版本,但这是我在没有帮助的情况下编写的版本。现在我正在尝试使用 try 和 except 重写我的程序,以便它通过打印退出程序的消息来优雅地处理非数字输入。

x = input(‘Enter Hours:’)
y = input(‘Enter Rate:’)
xy = float(x)*float(y)
text = ‘Pay:’
xr = ((float(x)-40)
xrt = (float(xr))*float(y)*0.5
ot = float(xrt+xy)
if(float(x))<=40:
    print(text,day)
elif(float(x))>40:
    print(text,it)

这是我迄今为止在尝试和例外中得到的结果:

x = input(‘Enter Hours:’)
y = input(‘Enter Rate:’)
xy = float(x)*float(y)
text = ‘Pay:’
xr = ((float(x)-40)
xrt = (float(xr))*float(y)*0.5
ot = float(xrt+xy)
try:
    if(float(x))<=40:
        print(text,day)
    elif(float(x))>40:
        print(text,it)
except:
    print(‘Error, please enter numeric input’)

现在这工作正常,但如果用户在输入小时时输入无效答案:假设他们输入“四十”,它仍然提示下一个输入输入速率:并且只有在那之后它才会打印错误,请输入数字输入但是我什么我想要它做的是停止并打印错误,请在输入“四十”时立即输入数字或无效的内容(不是数字的东西)我该怎么办?我知道有更简单的方法来编写此代码,并且我知道您通常不应该使用浮点数来赚钱我不担心我只是想知道如何在您输入时实现上述问题它打印我的错误消息的字符串而不是数字???

我尝试用谷歌搜索这个,但我似乎无法正确地找到答案,我正在寻找某人,请帮忙!谢谢你!

python
1个回答
0
投票

如果你想在一开始就显示错误消息,你应该将整个逻辑包装在一个 try catch 中,如下所示

def calculate_pay():
    try:
        x = float(input('Enter Hours: '))
        y = float(input('Enter Rate: '))
        
        xy = x * y
        text = 'Pay:'
        
        if x > 40:
            xr = x - 40
            xrt = xr * y * 0.5
            ot = xrt + xy
            print(text, ot)
        else:
            print(text, xy)

    except ValueError:
        print('Error, please enter numeric input')

calculate_pay()

这应该符合你的目的

© www.soinside.com 2019 - 2024. All rights reserved.