这是一个简单的工资计划,计算加班工资。为什么使用try/except递归(?)函数追踪错误?
我的目标是使用try
/except
和def
重新开始,如果输入字母而不是数字。
def payroll():
hrs = input("Enter Hours:")
try:
hrs = int(hrs)
except:
print('ERROR: use numbers, not letters to write numbers. start over')
payroll()
h = float(hrs)
#r = float(rate = input("enter rate:")) <= nested doesn't work
rate = input("enter rate:")
try:
rate = int(rate)
except:
print('ERROR: use numbers, not letters to write numbers. start over')
payroll()
r = float(rate)
paylow = r*h
if h <= 40: pay = paylow
else: pay = 40*r+r*1.5*(h-40)
print("pay: $",pay)
payroll()
如果我在第一次尝试时输入数字,它会完美地执行。 如果我输入的字母就开始了罚款,但一旦有,我再输入数字,它会成功执行和显示的薪酬,但随后回溯和值误差:
Enter Hours:g
ERROR: use numbers, not letters to write numbers. start over
Enter Hours:5
enter rate:5
pay: $ 25.0
Traceback (most recent call last):
File "tryexcept.py", line 24, in <module>
payroll()
File "tryexcept.py", line 11, in payroll
h = float(hrs)
ValueError: could not convert string to float: 'g'
我该如何解读错误?我能做些什么来解决这个问题?
感谢您的帮助,在除了从句 –