這是一個簡單的工資計劃,計算加班工資。爲什麼使用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'
我該如何解讀錯誤?我能做些什麼來解決這個問題?
感謝您的幫助,在除了從句 –