Seite 1 von 1

Anwender soll zwingend richtige Eingabe machen

Verfasst: Sonntag 30. Oktober 2022, 08:03
von Wallower
Guten Morgen!

In meinem Programm kann sich der Anwender durch Eingabe einer Zahl zwischen mehreren Versuchsgruppen entscheiden:

Code: Alles auswählen

Nr. Gruppe
0   'A'
1   'B'
...  ...
Das Programm soll also eine richtige Eingabe einfordern (für die Variable "gruppen_index"). Die Zahl der Gruppen hängt von der importierten Datei ab, z.B. 'A' bis 'G". Nach Stunden(!) scheint folgender Programmschnipsel zu funktionieren, kommt mir aber umständlich vor:

Code: Alles auswählen

for i, elt in enumerate(gruppen):
    print(i, "   '", gruppen[i], "'", sep="")
    
while True:
    try:
        gruppen_index = int(input("Nr. der Gruppe: "))
        if gruppen_index not in range(len(gruppen)):
            print("Zahl zwischen 0 und", len(gruppen)-1, "eingeben.")
            continue
        else:
            break
    except ValueError:
        print("Zahl zwischen 0 und", len(gruppen)-1, "eingeben.")
Freue mich über Verbesserungsvorschläge! : )

Re: Anwender soll zwingend richtige Eingabe machen

Verfasst: Sonntag 30. Oktober 2022, 11:19
von Sirius3
`elt` verwendest Du gar nicht. Für komplexere Ausgaben benutzt man Formatstrings.
Üblich ist es, Gruppen ab 1 zu nummerieren, nur Programmiererinnen denken 0-Indiziert.
Das continue ist unnötig. Codewiederholungen versucht man zu vermeiden

Code: Alles auswählen

for i, gruppe in enumerate(gruppen):
    print(f"{i} '{gruppe}'")
while True:
    try:
        gruppen_index = int(input("Nr. der Gruppe: "))
        if 1 <= gruppen_index <= len(gruppen):
            break
    except ValueError:
        Pass
    print(f"Zahl zwischen 1 und {len(gruppen)} eingeben.")

Re: Anwender soll zwingend richtige Eingabe machen

Verfasst: Sonntag 30. Oktober 2022, 17:20
von Wallower
Vielen lieben Dank! Das funktioniert wunderbar und danke auch für deine weitergehenden Erläuterungen!