while Schleife

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
python_anfaenger
User
Beiträge: 2
Registriert: Dienstag 29. September 2015, 19:57

Hallo erst einmal, dies ist das erste Mal, dass ich eine Frage in einem Forum stelle.
Hoffentlich verärgere ich hier niemanden mit meiner Grundlagenfrage, aber ich komme nach einer Stunde ausprobieren einfach nicht mehr weiter.
Hier mein Programm:

Code: Alles auswählen

ziff1=0
ziff2=0
ziff3=7
zustand=True
versuche=3
while zustand:
    input("Bitte geben Sie den dreistelligen PIN ein:")
    x=int(input("1. Ziffer:"))
    y=int(input("2. Ziffer:"))
    z=int(input("3. Ziffer:"))
    print("Sie haben Eingegeben:",x,y,z)
    zustand=ziff1==x and ziff2==y and ziff3==z
    if zustand:
        print("OFFEN")
    else: #wenn Bedingung ja eh nicht zutrifft, braucht man keine Anweisung für else
        print("FALSCHER PIN")
        print("Probieren Sie nochmals.")
        versuche=versuche-1
        print("Sie haben noch", versuche, "Versuche.")
Das Problem ist, dass die Schleife nun immer abbricht, wenn ich den Pin falsch eingegeben habe & nicht wenn er richtig eingegeben wurde. Wie kann ich das ändern? Muss ich dazu die Bedingung im Schleifenkopf unten irgendwie wiederholen?
Vielen Dank erst einmal!
Zuletzt geändert von Anonymous am Dienstag 29. September 2015, 20:44, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Hallo python_anfaenger!

Könntest du bitte deinen Code in Code pder Python-Tags packen?

Beitrag editieren, "Code"-Knopf über dem Eingabefeld drücken und dann deinen Code zwischen die Code-Tags kopieren.
Wenn du das tust bleibt die Einrückung erhalten, die unter Python wichtig ist.
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Stundenlanges Probieren ist auch nicht Sinn der Sache.

Die Schleife wird solange ausgeführt, wie der zustand wahr (True) ist. Und jetzt spiele mal (gedanklich, auf dem Papier, ...) durch, was mit dem Objekt hinter dem Namen zustand während des Schleifendurchlaufs passiert. Wann wird er wahr und wann falsch?
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
python_anfaenger
User
Beiträge: 2
Registriert: Dienstag 29. September 2015, 19:57

Das heisst also, solange ich ich den richtigen Code (007) eingebe, wiederholt sich die Schleife.
Im Gegenteil heisst das, dass wenn ich eben eine falschen Code eingebe, stoppt das Programm.
Muss ich dann also zustand=False umschreiben oder die Bedingungen für den Zuständ ändern?
BlackJack

@python_anfaenger: Überlege mal genau was jeweils bei den beiden Möglichkeiten passiert und probier's aus um Deine Vermutung durch Beobachtung zu stützen (oder zu widerlegen falls Du einen Denkfehler gemacht hast).

In realem Code würde man sich `zustand` übrigens eher sparen und eine ”Endlosschleife” mit ``while True:`` schreiben, die dann im Erfolgsfall mit ``break`` abgebrochen wird. Oder eventuell auch mit ``return`` falls man das in eine eigene Funktion steckt.
Antworten