Seite 2 von 2

Re: Doppelabsicherung bei Eingabe

Verfasst: Sonntag 12. April 2020, 14:40
von Sirius3
unterbrechen und zurückspringen passt nicht zusammen. In welchem Fall soll denn die Schleife unterbrochen werden?

Re: Doppelabsicherung bei Eingabe

Verfasst: Sonntag 12. April 2020, 14:47
von Bill987654321
Ich möchte, dass Ups! Das war keine gültige Zahl. Versuche es noch einmal... erscheint, wenn ein Buchstabe (und auch andere Zeichen wie z.B. ?",%) oder eine Zahl kleiner gleich 0 oder größer MANNSCHAFTSANZAHL eingegeben wird. Dann soll der Nutzer eine erneute Eingabe vornehmen.

Re: Doppelabsicherung bei Eingabe

Verfasst: Sonntag 12. April 2020, 14:55
von Sirius3
Ja, das wissen wir schon, aber in welchem Fall soll die Schleife unterbrochen werden, und in welchem Fall wird sie im Moment unterbrochen.

Re: Doppelabsicherung bei Eingabe

Verfasst: Sonntag 12. April 2020, 14:59
von Bill987654321
Vermutlich verstehe ich etwas nicht.

Die Schleife soll unterbrochen werden, wenn eine gültige Zahl eingegeben wird. Diese muss zwischen 1 und einschließlich der MANNSCHAFTSANZAHL liegen.

In allen anderen Fällen soll die Schleife weiterlaufen. Es soll der Benutzer immer wieder die Fehlemeldung erhalten und dann eine neue Eingabe vornehmen dürfen/müssen.

Re: Doppelabsicherung bei Eingabe

Verfasst: Sonntag 12. April 2020, 15:21
von Sirius3
Genau richtig. Aber welche Bedingung prüfst Du denn tatsächlich?

Re: Doppelabsicherung bei Eingabe

Verfasst: Sonntag 12. April 2020, 15:29
von Bill987654321
Ich prüfe (i < 0 or i >= MANNSCHAFTSANZAHL)

Ich prüfe, ob i kleiner als 0 oder größer als MANNSCHAFTSANZAHL ist.

Ist das falsch? Wenn ja - warum?

Re: Doppelabsicherung bei Eingabe

Verfasst: Sonntag 12. April 2020, 15:51
von Sirius3
Ich weiß nicht, wie ich es noch anders formulieren soll. Ja es ist falsch, und warum, hast Du schon vor ein paar Beiträgen selbst geliefert.

Re: Doppelabsicherung bei Eingabe

Verfasst: Sonntag 12. April 2020, 16:16
von Bill987654321
Wie bereits bekannt ist mein aktueller Stand so:

Code: Alles auswählen

while True:
    try:
        i = int(input("Gebe die Kennzahl für die Heimmannschaft ein:"))
        if (i < 0 or i >= MANNSCHAFTSANZAHL):
            break
    except ValueError:
        print("Ups! Das war keine gültige Zahl. Versuche es noch einmal...")
Vielleicht stehe ich gerade auf dem Schlauch. Ich habe diese Zeilen auch in ein eigenes File kopiert. Das besteht aus 8 Zeilen. Hier habe ich schon viele Änderungen vorgenommen und ausprobiert. Es kommt aber am Ende nie das raus, wie es sein soll.

Ich weiß wrklich nicht, was falsch ist. Könntest du mir bitte die Zeilen programmiern? Das wäre sehr nett.

Es gibt die Zeile mit dem ValueError. Muss man wissen, welche Fehlermeldung geworden wird, um diese abzufangen? Vermutlich ja - ich habe mal nur Error eingegeben. Das hat nicht funktioniert.

Re: Doppelabsicherung bei Eingabe

Verfasst: Sonntag 12. April 2020, 16:22
von Bill987654321
Habe gerade bei meinem Kurzprogramm die Vorzeichen geändert, weil ich vermute, dass es an ihnen liegt. Das Programm läuft durch. Aber egal, welche Zahl (zwischen 0 und 5 bzw. außerhalb dieses Bereichs) ich eingebe, kommt nicht die Zeile, dass man die Eingabe noch mal versuchen soll.
Die Meldung Ups! Das war keine gültige Zahl. Versuche es noch einmal... kommt nur, wenn ich einen Buchstaben eingebe.

Re: Doppelabsicherung bei Eingabe

Verfasst: Sonntag 12. April 2020, 16:37
von Sirius3
Der except-Teil wird nur durchlaufen, wenn auch eine Exception auftritt. Ein if löst das nicht aus. Wenn Du eine Text-Ausgabe in jedem Schleifendurchgang willst, dann pack das print einfach hinter den excet-Bloc:

Code: Alles auswählen

while True:
    try:
        i = int(input("Gebe die Kennzahl für die Heimmannschaft ein:"))
    except ValueError:
        pass
    else:
        if 0 <= i < MANNSCHAFTSANZAHL:
            break
    print("Ups! Das war keine gültige Zahl. Versuche es noch einmal...")

Re: Doppelabsicherung bei Eingabe

Verfasst: Sonntag 12. April 2020, 16:48
von Bill987654321
Vielen, vielen Dank für die Lösung. Habe sie gerade ausprobiert. Da wäre ich nie drauf gekommen.
Werde noch nachschauen wass pass bedeutet. Habe es in meinen Büchern schon gesehen.
Logge mich jetzt aus.
Nochmal vielen Dank
Bill

Re: Doppelabsicherung bei Eingabe

Verfasst: Dienstag 14. April 2020, 14:05
von Bill987654321
Ich kann die verschiedenen Varianten jetzt nachvollziehen.
Vielen Dank nochmals.