Zwei korrekte Eingaben machen

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
Wallower
User
Beiträge: 13
Registriert: Montag 17. Oktober 2022, 13:12

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! : )
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Steck deinen Code in eine Funktion, und ruf die zweimal auf.
Wallower
User
Beiträge: 13
Registriert: Montag 17. Oktober 2022, 13:12

Danke.

Wie bekomme ich es dann hin, dass die Funktion zwischen den beiden Exceptions unterscheidet?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Wallower
User
Beiträge: 13
Registriert: Montag 17. Oktober 2022, 13:12

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
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich sehe keine Funktion.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Wallower
User
Beiträge: 13
Registriert: Montag 17. Oktober 2022, 13:12

Es hat etwas gedauert, aber ich glaube, ich habe es jetzt. Danke!
Antworten