bin hier schon 2 Tage am grübeln über folgendes:
#Es handelt sich um eine Übung in einem Buch. Die verlangt ein Script zu schreiben das Einträge in eine Liste vornimmt.
#Das Programm schaute am Schluss ein bischen anders aus aber es hat gemacht was es sollte. Es hat halt alles eingetragen was man ihm vorgeschrieben hat.
Ich wollte nun noch ein paar Abfragen einbauen (Übungen aus den vorherigen Kapiteln)
hier mal der Code:
Code: Alles auswählen
f = open("Bestellliste.txt", "a")
while True:
artikelnummer = eval(input("Geben Sie bitte die 5 Stellige Artikelnummer ein, zum abbrechen bitte 'quit' eingeben : "))
artikelnummer = (str(artikelnummer))
a = (len(artikelnummer))
if artikelnummer == "quit":
break
try:
if a < 5:
print ("Artikelnummer zu kurz")
elif a > 5:
print ("Artikelnummer zu lang!")
except ValueError:
print ("Bitte nur 5 Stellige Zahlen eingeben!")
except NameError:
print ("nur Zahlen!")
finally:
if a == 5:
print("erledigt!")
f.write (artikelnummer+"\n")
f.close
print ("Auf wiedersehen!")
problem1 = Das erste ist das wenn ich Buchstaben eingebe, eigentlich die except Schleife laufen sollte mit ValueError oder NameError
diese springt jedoch nicht an und das Programm wird mit dem "Error-Wert" abegebrochen. Obwohl die finally Schleife wirkt!
Warum zum T***** schaltet das except nicht ???
problem2 = Die zweite wäre das wenn eine 0 oder 5x 0 eingegeben wird alles auseinanderfällt.
z.B. wird die Artikelnummer, die ja 5 Stellen haben muss, 01234 nicht erkannt.
oder 0000000000 wird als zu kurz ausgegeben.
Kann mir schon vorstellen das es daran liegt das ich die "int" eingabe in einen "str"ing umwandle um die len() abzufragen.
Wie kann ich trotzdem eine 0er Artikelnummer in die Liste bringen und trotzdem durch die Schleife laufen lassen?
Mir raucht schon der Schädel....
Grüße