Als erstes ist es wichtig, aussagekärftige Variablennamen zu verwenden und nicht welche, die sich aus kryptischen Abkürzungen zusammensetzen und irreführend sind, oder Variablen die für mehrere Dinge verwendet werden.
Code: Alles auswählen
numbers = []
empty_list_of_numbers = list(map(int, numbers))
new_input = ""
while new_input != "Done":
new_input = input("Enter Integer Number or Enter Done: ")
if new_input == "Done":
break
try:
new_number = int(new_input)
except:
print("Invalid input")
if new_number != "Done" :
numbers.append(new_number)
maximum = max(empty_list_of_numbers, default="Empty")
minimum = min(empty_list_of_numbers, default="Empty")
for unused_empty_list in [empty_list_of_numbers]:
print("Maximum is", maximum)
print("Minimum is", minimum)
Ich habe die Namen anhand des Codes ermittelt, so dass deutlich werden sollte, wo überall die Probleme liegen.
`empty_list_of_numbers` ist von Anfang bis Ende des Programms leer. Da Du nie was in die Liste packst. Das sollte Dein Ergebnis erklären.
new_num wird für zwei verschieden Dinge verwendet. Einmal als Eingabe und einmal die Eingabe in eine Zahl umgewandelt. Durch die Aufspaltung in zwei Variablen wird klar, dass da was schief läuft, denn `new_number` ist nur definiert, wenn der Input in eine Zahl umgewandelt werden kann, Du machst aber bei einem Fehler weiter, als ob nichts wäre, was dann später zu Folgefehlern oder falschen Ergebnissen führt. new_number mit einem String zu vergleichen, wird niemals etwas wahres werden. Du vergleichst dreimal mit "Done" obwohl einmal ausreichen sollte.
Man initialisiert keine Variable mit einem Dummy-Wert, nur dass die while-Schleife starten kann, sondern benutzt statt dessen eine while-True-Schleife.
Nackte excepts sollte man nicht verwenden, weil man nur Fehler, die man auch erwartet abfangen darf.
Code: Alles auswählen
numbers = []
while True:
new_input = input("Enter Integer Number or Enter Done: ")
if new_input == "Done":
break
try:
new_number = int(new_input)
except ValueError:
print("Invalid input")
else:
numbers.append(new_number)
Nun zum zweiten Teil des Programms. Statt `empty_list_of_numbers` willst Du wahrscheinlich `numbers` verwenden. Eine for-Schleife über eine Einelementige Liste ist unsinn, zumal Du die Schleifenvariable gar nicht verwendest.
Code: Alles auswählen
maximum = max(numbers, default="Empty")
minimum = min(numbers, default="Empty")
print("Maximum is", maximum)
print("Minimum is", minimum)