Bei "while" break und continue vermeiden, aber Einrückung "flach" halten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
greetings1
User
Beiträge: 51
Registriert: Donnerstag 22. Oktober 2020, 18:19

Hallo, hat jemand eine Idee, wie ich das Schnipsel umschreiben könnte, so dass kein `continue` gebraucht wird? Danke schonmal

Code: Alles auswählen

my_dictionary = {}


def a_func(sk: dict):
    pass


def n_func(sk: dict):
    pass


def h_func(sk: dict):
    options = {"a": a_func, "n": n_func}
    cont = True
    invalid = False
    while cont:
        if invalid:
            print("Das war eine ungültige Eingabe. Bitte nochmal.")
            invalid = False
        print("Bitte wähle: a n e")
        input1 = input()
        if len(input1) == 0:
            invalid = True
            continue
        ch = input1[0]
        if ch == "e":
            cont = False
            continue
        if ch not in options:
            invalid = True
            continue
        options[ch](sk)


h_func(my_dictionary)
narpfel
User
Beiträge: 691
Registriert: Freitag 20. Oktober 2017, 16:10

Moin,

Code: Alles auswählen

In [6]: def menu(sk):
   ...:     options = {"a": a, "n": n}
   ...:     while True:
   ...:         choice = input(f"Bitte wählen ({' '.join(options)} e): ")
   ...:         if choice == "e":
   ...:             return
   ...:         try:
   ...:             f = options[choice]
   ...:         except KeyError:
   ...:             print("Das war eine ungültige Eingabe. Bitte nochmal.")
   ...:         else:
   ...:             f(sk)
   ...:             return
Sonstige Hinweise: Die Namen in deinem Code sind größtenteils nicht sehr gut: `{a,h,n}_func` sagt nichts über den Zweck der Funktionen aus; und das `func` ist ein sinnloser Suffix, weil es durch das Aufrufen sowieso schon klar ist, dass es Funktionen sind. Genauso das `my` in `my_dictionary`. Wo ist `our_dictionary` und `your_dictionary`, dass man ein `my` zum Unterscheiden braucht?

Abkürzungen sind auch schlecht lesbar: Steht `ch` für `choice` oder `character`? `sk` könnte ich nichtmal durch Raten entziffern. :)
greetings1
User
Beiträge: 51
Registriert: Donnerstag 22. Oktober 2020, 18:19

Danke Dir für Deine Antwort :) :wink:
so gut hätte ich das nicht hinbekommen... Ja, die Abkürzungen sind wirklich schlecht lesbar, aber das sollen erst mal "Prototypen" sein. Schönen Abend!
Antworten