beenden einer 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
Kornnatter
User
Beiträge: 1
Registriert: Mittwoch 6. März 2019, 13:14

Hallo!
ich stehe seit einiger Zeit vor einem kleinen Problem mit dem Beenden einer while True schleife. Das Programm soll ständig und alleine laufen, das heißt es kommt nicht infrage, ein Keyboard interrupt einzubauen. Außerdem kann ich soweit ich das bis jetzt verstanden habe, den break Befehl auch nicht benutzen, da , falls die if schleife nicht ausgeführt wird, die darunter liegende while True schleife weiterhin so lange ausgeführt werden soll, bis die if schleife ausgeführt wird.

Kann man irgendwie von der innersten if-Schleife direkt in die äußerste While-True Schleife springen? Das ganze soll in etwa so aussehen...

Code: Alles auswählen

while True: 
    print('erste While schleife')
    if 1<2: 
        print('erstes if')
        while True: 
            print('zweite While schleife')
            if 1<2: 
                print('zweites if')
                while True: 
                    print('dritte while schleife')
                    if 1<2: 
                        print('3. if') # von hier direkt in die erste While schleife
                        break
                    break
                break
            break
        
#                print('hier sollte noch etwas ausgeführt werden können')
#            print('hier sollte noch etwas ausgeführt werden können')
#        print('hier sollte noch etwas ausgeführt werden können')
    print('hier solls wieder zurück gehen')
...und soll auch das machen, was das Beispiel hier macht bis auf den Unterschied, dass die print Befehle, die hier als Kommentare stehen auch an dieser Stelle ausgeführt werden können.

Vielen Dank für Ideen!
kornnatter
Benutzeravatar
__blackjack__
User
Beiträge: 14040
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Kornnatter: Eine Lösung wäre es nicht so tief zu verschachteln, also beispielsweise die inneren beiden Schleifen in eine Funktion auslagern und dann an der entsprechenden Stelle mit ``return`` abbrechen.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Benutzeravatar
sparrow
User
Beiträge: 4537
Registriert: Freitag 17. April 2009, 10:28

Das klingt so, als wäre das Konzept etwas kaputt.
Grundsätzlich laufen ja While-Schleifen nur, solange eine Bedingung erfüllt ist, die bei dem Eintritt in die Schleife geprüft wird. Wenn du also im Inneren etwas tust, dass diese Bedingung ändert, kannst du so Einfluss darauf nehmen, ob eine Schleife neu beginnt.

Das Springen im Code ist heutzutage unüblich. Deshalb vermute ich, dass du falsch an dein Problem heran gehst und sich die Sache einfach lösen lässt. Ein Beispiel hat __blackjack__ ja bereits genannt.
Sirius3
User
Beiträge: 18269
Registriert: Sonntag 21. Oktober 2012, 17:20

@Kornnatter: um genau zu sagen, was die korrekte Lösung ist, müssen wir das konkrete Problem kennen. Eine weitere Lösung wäre vielleicht, über Generatoren aus den drei Schleifen effektiv eine zu machen.
Antworten