Dies ist ein einfaches Abrechnungsprogramm, das die Bezahlung mit Überstunden berechnet.Warum der Traceback-Fehler mit einer try/exception rekursive (?) Funktion?
Mein Ziel war es, try
/except
und def
neu zu starten, wenn Buchstaben anstelle von Zahlen eingegeben werden.
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()
Wenn ich beim ersten Versuch Zahlen eintrage, läuft es einwandfrei. Wenn ich eingegebenen Buchstaben beginnt es über in Ordnung, aber wenn es hat, und ich dann Eingabe von Zahlen, es wird erfolgreich ausgeführt und die Anzeige zu bezahlen, sondern durch einen Rückverfolgungs und ein Wert Fehler gefolgt:
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'
Wie kann ich interpretieren der Fehler? Und was kann ich tun, um das Problem zu beheben?
Benötigen Sie eine Return-Anweisung am Ende der beiden Ausnahme Klauseln –