Seite 1 von 1

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

Verfasst: Samstag 5. Dezember 2020, 19:23
von greetings1
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)

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

Verfasst: Samstag 5. Dezember 2020, 19:50
von narpfel
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. :)

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

Verfasst: Samstag 5. Dezember 2020, 20:40
von greetings1
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!