mehrere verschachtelte schleifen verlassen

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
sauterle
User
Beiträge: 81
Registriert: Mittwoch 27. Juli 2022, 21:33

Hallo
meine frage ist zwar ziemlich primitiv aber ich habe auch im Netz keine Möglichkeit gefunden es zu machen.
wie kehre ich von meiner if Anweisung in die Ursprungsschleife(erste while schleife) mit einem Befehl zurück ohne 3 und 5 zu printen

Code: Alles auswählen

while True:
    print(1)
    while True:
        print(2)
        while True:
            if True:
                gesuchter befehl
            print(5)
        print(3)
    print(4)
Danke für Hilfe schon einmal im voraus
LG sauterle
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Zb indem die innereren schleifen eine Funktion werden, die du mit Return verlässt.
Benutzeravatar
noisefloor
User
Beiträge: 3882
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

bei mehr als zwei Schleifen verschachteln wird's IMHO sowieso unübersichtlich und man sollte überlegen, ob man das nicht besser strukturieren kann.

Gruß, noisefloor
nezzcarth
User
Beiträge: 1647
Registriert: Samstag 16. April 2011, 12:47

sauterle hat geschrieben: Montag 30. Oktober 2023, 15:59 wie kehre ich von meiner if Anweisung in die Ursprungsschleife(erste while schleife) mit einem Befehl zurück ohne 3 und 5 zu printen
5 wird hier ja gar nicht ausgegeben sondern 2 und 3. 'break' beendet immer nur die aktuelle Schleife. Wenn du etwas anderes benötigst, ist das ein Hinweis darauf, dass du dein Programm anders strukturiert sein sollte, s.a. die Hinweise von __deets__ und noisefoor. Der Vollständigkeit halber kann man noch erwähnen, dass es bei Schleifen in Python ein etwas obskures Feature gibt, um bestimmte Code-Teile nur auszuführen, wenn die Schleife normal beendet wurde, ohne break und das könnte man hier tatsächlich einsetzen, um den erwünschten Effekt zu erzielen. Allerdings ist das eher etwas, das man sich erst anschauen sollte, wenn man Python schon gut beherrscht und die sehr selten Fälle, in denen es sinnvoll ist erkennen kann.
sauterle
User
Beiträge: 81
Registriert: Mittwoch 27. Juli 2022, 21:33

Hallo
schade dass es keinen einfachen Befehl gibt. Ich habe es jetzt einfach folgendermaßen gelöst:

Code: Alles auswählen

breakbool = False
while True:
    while True:
        while True:
            if True:
                breakbool = True
                break
            print("blobloblo")
            #restlicher code der schleife
        if breakbool:
            break
        print("blablabla")
        #restlicher code der schleife
    print("plapper")
    #restlicher code der schleife
was meint __deets__ mit
Zb indem die inneren Schleifen eine Funktion werden, die du mit return verlässt.
und wie heißt dieses "obskure Feature"(das Interessiert mich jetzt einfach :D )
LG sauterle
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Das "obskure Feature" heißt "else", was dir jetzt wenig helfen wird.
Hier die Lösung mit einer Funktion:

Code: Alles auswählen

def inner():
    while True:
        print(2)
        while True:
            if True:
                gesuchter befehl
                return
            print(5)
        print(3)

while True:
    print(1)
    inner()
    print(4)
sauterle
User
Beiträge: 81
Registriert: Mittwoch 27. Juli 2022, 21:33

Danke 8)
Benutzeravatar
DeaD_EyE
User
Beiträge: 1038
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Die Funktion ist eine Möglichkeit. Ich sehe das Problem aber an erster Stelle: die verschachtelten Schleifen.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten