我编写了以下程序来计算超过 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” 或无效的内容(不是数字的内容) 我该怎么办?我知道有更简单的方法来编写此代码,并且我知道您通常不应该使用浮点数来赚钱,我并不担心这一点,我只是想知道如何尽快实现上述问题你输入一个字符串而不是数字,它会打印我的错误消息?
您可以通过编写一个实用函数来帮助自己,该函数将提示输入一些需要转换为浮点数的输入。这样,如果函数返回,该值就保证是 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