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

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

我编写了以下程序来计算超过 40 小时的工资加上时间。

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)

我正在尝试使用 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)
try:
    if(float(x))<=40:
        print(text,day)
    elif(float(x))>40:
        print(text,it)
except:
    print(‘Error, please enter numeric input’)

如果用户在输入“Enter Hours:”时输入无效答案:假设他们输入“40”,它仍然会提示下一个输入“Enter Rate:”,只有在这之后才会打印“Error, please Enter numeric input”。但我想要它做的是停止并打印 Error, please Enter numeric input just as they 输入“40” 或无效的内容(不是数字的内容) 我该怎么办?我知道有更简单的方法来编写此代码,并且我知道您通常不应该使用浮点数来赚钱,我并不担心这一点,我只是想知道如何尽快实现上述问题你输入一个字符串而不是数字,它会打印我的错误消息?

python
1个回答
0
投票

您可以通过编写一个实用函数来帮助自己,该函数将提示输入一些需要转换为浮点数的输入。这样,如果函数返回,该值就保证是 float 类型。

例如:

def get_float(prompt: str) -> float:
    while True:
        value = input(prompt)
        try:
            return float(value)
        except ValueError as e:
            print(e)

然后,您可以像这样获取输入值:

x = get_float("Enter hours: ")
y = get_float("Enter rate: ")

因此,对 float() 的多次调用变得多余,并且您的计算被简化为:

xy = x * y
xr = x - 40
xrt = xr * y * 0.5
ot = xrt + xy
© www.soinside.com 2019 - 2024. All rights reserved.