Seite 1 von 1

Zwei korrekte Eingaben machen

Verfasst: Montag 31. Oktober 2022, 10:45
von Wallower
Hey!

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

Code: Alles auswählen

Nr. Gruppe
1   'A'
2   'B'
...  ...
Falls der Anwender nur eine Eingabe tätigen soll:

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.")
Falls der Anwender aber zwei Gruppen wählen soll, die auch noch unterschiedlich sein sollen, bekomme ich keinen funktionierenden Code hin...

Es soll, abhängig von der Eingabe, entweder print(f"Zahl zwischen 1 und {len(gruppen)} eingeben.") oder print("Nicht zweimal dieselbe Gruppe wählen.") ausgegeben werden.

Freue mich über jede Unterstützung! : )

Re: Zwei korrekte Eingaben machen

Verfasst: Montag 31. Oktober 2022, 10:52
von __deets__
Steck deinen Code in eine Funktion, und ruf die zweimal auf.

Re: Zwei korrekte Eingaben machen

Verfasst: Montag 31. Oktober 2022, 11:02
von Wallower
Danke.

Wie bekomme ich es dann hin, dass die Funktion zwischen den beiden Exceptions unterscheidet?

Re: Zwei korrekte Eingaben machen

Verfasst: Montag 31. Oktober 2022, 11:06
von __deets__
Ich verstehe nicht, was du meinst - wo kommte denn da eine andere Exception ins Spiel?

Wenn du nicht willst, dass man zweimal die gleiche Gruppe auswaehlt, dann hast du zwei Moeglichkeiten:

- zweimal die Funktion benutzen, aber dann mit dem Rueckgabewert pruefen, ob die zweite Gruppe unterschiedlich der ersten ist. Wenn nicht, weiter abfragen. Also brauchst du eine while-Schleife dazu, um den Aufruf herum.
- eine Funktion schreiben, die das kann, indem sie eine Liste der verbotenen Antworten bekommt (also schon gewaehlte Gruppen), und in der while-Schleife, die du schon hast, das als zweites Kriterium pruefen, mit entsprechender Ausgabe etc. pp.

Re: Zwei korrekte Eingaben machen

Verfasst: Montag 31. Oktober 2022, 11:12
von Wallower
Danke. Ich probiere Ersteres:

Code: Alles auswählen

for i, gruppe in enumerate(gruppen):
    print(f"{i} '{gruppe}'")
    
while True:
    try:
        gruppen_index1 = int(input("Nr. der 1. Gruppe: "))
        if 1 <= gruppen_index1 <= len(gruppen):
            gruppen_index2 = int(input("Nr. der 2. Gruppe: "))
                if 1 <= gruppen_index2 <= len(gruppen
                    break
                while gruppen_index2 != gruppen_index2:
                    break
                break
    except ValueError:
        Pass
    print(f"Zahl zwischen 1 und {len(gruppen)} eingeben.")
Sorry, ich brauch nochmal Hilfe

Re: Zwei korrekte Eingaben machen

Verfasst: Montag 31. Oktober 2022, 11:15
von __deets__
Ich sehe keine Funktion.

Re: Zwei korrekte Eingaben machen

Verfasst: Montag 31. Oktober 2022, 11:22
von __deets__
Und noch ein Nachtrag: ich habe vorgeschlagen, dass du den funktionierenden Code fuer eine Abfrage deiner Gruppen in eine Funktion steckst, und den mehrfach (und mit weiterer Logik drumrum) aufrufst. Das hier ist das komplette Gegenteil: keine Funktion. Und auch nicht drumrum die Frage der Wiederholung bei gleicher Gruppe geklaert. Sondern alles ineinander gewuerfelt. Das wird nicht (oder nur schwerlich, und konfus) funktionieren.

Also nochmal: erster Schritt ist eine Funktion zu bauen, und die zweimal aufzurufen. Und dann im zweiten Schritt den zweiten Aufruf so zu gestalten, dass er so lange wiederholt wird, bis die Eingabe korrekt ist.

Re: Zwei korrekte Eingaben machen

Verfasst: Mittwoch 2. November 2022, 20:36
von Wallower
Es hat etwas gedauert, aber ich glaube, ich habe es jetzt. Danke!