Python Code unsauber?

3 Antworten

Mir würde jetzt direkt bei dem einfallen, dass du die Schleifen mit again_2 weglassen könntest und durch continue ersetzen könntest. Also bei ungültiger Eingabe keine Schleife sondern continue aufrufen, das würde die erste Schleife komplett ersetzen.

Da die int Funktion in Python Exceptions werfen kann kannst du diese ebenfalls abfangen und nutzen. So würde dein Programm einfach abbrechen.

Die 2te while ist zwar nicht wirklich redundant wird aber meist so gelöst, dass ungültige Eingaben zB einfach als ein Nein gewertet werden. Hängt eben vom Programm ab.

Ansonsten wären diese While Blöcke auch Platz für eigene Funktionen also zB eine Funktion getOperator, welche solange die Eingabe liest bis ein gültiger Operator gewählt wurde. Dadurch sparst du dir die verschachtelten Schleifen und die extra Variable was das einfacher lesbar macht.

Vernünftige Variablennamen sind die halbe Miete für Lesbarkeit.

statt bool_again1 vielleicht notDone

statt bool_again2 vielleicht inputInvalid

Den letzten Block würde ich so schreiben:

cont = ""
while cont not in ("1", "2"):
  cont = input("Do you ...")
  if cont == "2":
     notDone = False
  # wenn connt == 1 ist, wird der große Block wiederholt

Erfahrung ist die Summe aller selbst gemachten (und beseitigten) Fehler ;-)

Je mehr Programme du schreibst, umso besser wird dein Stil.


Anstatt if und else kannst du if (!bool_again) return bool_again = False;

Und Kommentare schreiben macht alles immer verständlicher

Woher ich das weiß:Hobby – Mehrjährige Erfahrung in Spieleprogrammierung (C#, C++)