Seite 1 von 2

Geschachtelte Schleifen

Verfasst: Samstag 3. März 2018, 10:03
von CoderGirl
Hallo,

ich habe mal eine grundsätzliche Frage.
Ich habe eine dreifach geschachtelte Schleife, wobei in Abhängigkeit
einer BOOLEschen Variable nicht immer jede Schleife durchlaufen werden
soll.
Kann man das in einem Konstrukt erschlagen oder brauch ich da ne Fallunterscheidung
mit den passenden Konstrukt?
Die innere Schleife ist nicht das Problem, es sind eher die beiden äußeren

Danke Euch
Codergirl

Re: Geschachtelte Schleifen

Verfasst: Samstag 3. März 2018, 10:54
von Sirius3
@CoderGirl: Code sagt mehr als tausend Worte. Eventuell kannst Du `filter` benutzen.

Re: Geschachtelte Schleifen

Verfasst: Montag 9. April 2018, 11:47
von CoderGirl
Hallo

sorry, dass ich erst jetzt antworte.
War heftig krank...

Ich schau mal nach dem filter...danke..ansonsten poste ich ein Stück Code,
das exemplarisch steht für mein Problem..

Re: Geschachtelte Schleifen

Verfasst: Montag 9. April 2018, 11:55
von CoderGirl
Hallo

also ich versuche mal ein griffiges Beispiel dazu,
auch, wenn es etwas abgeändert mein Problem darstellt.

Ich habe Kugeln, die können in Grün und Rot vorliegen, aber sind es nicht immer.

Code: Alles auswählen

for green in my_green_list:
    # do sth with green balls
    
    for red in my_red_list:
           # do sth with red balls


Jetzt ist es so, dass ich nicht immer grün habe bzw.
möchte, dass die grünen ausgewertet werden. D.h
ich will die grüne Schleife nicht durchlaufen

Re: Geschachtelte Schleifen

Verfasst: Montag 9. April 2018, 12:45
von __deets__
Na entweder haengt der Code in der Schleife ueber die roten Kugeln von green ab - dann *musst* du da ja eine Belegung haben, und wenn das zB None sein kann, dann kannst du

Code: Alles auswählen

if not green_thingies:
     green_thingies = [None] 
...
machen, um dir immer einen Wert fue die innere Schleife zu erzeugen.

Oder er haengt *nicht* von green ab, dann kannst du die Schleife doch hoch ziehen auf die gleiche Ebene, und hast mit der for-schleife ueber die gruenen Dinge nix zu tun?

Re: Geschachtelte Schleifen

Verfasst: Montag 9. April 2018, 13:17
von CoderGirl
Danke!

ich vergaß zu erwähnen, dass in der roten, inneren schleife,
auch werte der grünen Schleife zum Einsatz kommen, wenn sie
durchlaufen wird.
Also auf eine Ebene ginge da nicht

Danke für den Hinweis

Re: Geschachtelte Schleifen

Verfasst: Montag 9. April 2018, 13:19
von __deets__
Naja, wenn du gruene Werte brauchst, dann musst du gruene Werte bereitstellen. Wie das ginge habe ich dir ja gezeigt. Wenn du keinen solchen Standardwert oder was auch immer da bei dir sinn macht hast, dann kann man schon rein logisch betrachtet das Problem nicht loesen.

Re: Geschachtelte Schleifen

Verfasst: Montag 9. April 2018, 13:21
von CoderGirl
Hallo

dann mache ich es manuell und dupliziere die
Schleifen in den Varianten und schreibe sie
mehrfach...dann bin ich auf der sicheren Seite
auch wenn es schlechter Stil ist

Code: Alles auswählen

if (case1):
    for green in my_green_list:
        # do sth with green balls
    
        for red in my_red_list:
            # do sth with red balls

if (case2):
    for red in my_red_list:
        # do sth with red balls

Danke

Re: Geschachtelte Schleifen

Verfasst: Montag 9. April 2018, 13:29
von Sirius3
@CoderGirl: wie __deets__ schon geschrieben hat, wenn Du Daten von den grünen Bällen brauchst, dann kannst Du case2 nicht laufen lassen, wenn nicht, dann macht case1 keinen Sinn. Ganz allgemein schreibt man eine Funktion, die die roten Bälle abarbeitet, die kann man dann sowohl in case1 als auch in case2 aufrufen.

Bitte zeige Code, der das Problem beschreibt, und nicht irgendwas, was so keinen Sinn macht, so kann man nicht helfen.

Re: Geschachtelte Schleifen

Verfasst: Montag 9. April 2018, 13:35
von CoderGirl
ja und da sind wir wieder am Punkt.

Entschuldigt meine Dummheit und mein Unwissen...


DER CODE FUNKTIONIERT MÄNNER UND MACHT, WAS ICH BRAUCHE
!!!!!

Wollte ihn nur entschlacken, aber das dumme Mädchen bringt es ja nicht hin

Re: Geschachtelte Schleifen

Verfasst: Montag 9. April 2018, 13:35
von __deets__
Ob das guter oder schlechter Stil ist kann ich so nicht sagen - dafuer hast du immer noch nicht genug Information geliefert. Wenn es zB 10 Dinge gibt, die du mit "red" machst, und eines das du mit "red + green" machst, aber eben nur wenn du green auch hast, dann ist es besser das so zu schreiben:

Code: Alles auswählen

if not greens:
    greens = [SENTINEL_WERT_OFT_NONE]
for green in greens:
     for red in reds:
           ding_1(red)
           ...
           if green is not SENTINEL_WERT_OFT_NONE:
                ding_mit_red_und_green
Aber ob das wirklich so hinkommt oder nicht haengt eben schon sehr konkret von den tatsaechlichen Dingen ab. Dazu kommt natuerlich noch, das es sinnvoll sein kann, den Code *in* den Schleifen wiederum in Funktionen zu packen, die ggf. deine Variante mit aeusserer Fallunterscheidung auch positiv beeinflussen.

Re: Geschachtelte Schleifen

Verfasst: Montag 9. April 2018, 13:36
von CoderGirl
ich haue hier ab.

wie in allen IT foren....

Re: Geschachtelte Schleifen

Verfasst: Montag 9. April 2018, 13:39
von __deets__
CoderGirl hat geschrieben:ja und da sind wir wieder am Punkt.

Entschuldigt meine Dummheit und mein Unwissen...


DER CODE FUNKTIONIERT MÄNNER UND MACHT, WAS ICH BRAUCHE
!!!!!

Wollte ihn nur entschlacken, aber das dumme Mädchen bringt es ja nicht hin
Seufz. Niemand hat dich als dumm bezeichnet. Alle Antworten haben darauf hingewiesen, dass fuer eine gute Antwort nicht genug Informationen vorliegen. Aber wenn das schon so antagonisiert - dann halt nicht :K

Re: Geschachtelte Schleifen

Verfasst: Dienstag 10. April 2018, 08:57
von DeaD_EyE
CoderGirl hat geschrieben:ich haue hier ab.

wie in allen IT foren....
Wer ist alle?
Das wäre sehr schade. Deine Reaktion zeigt aber auch, dass deine Geduld nicht lange anhält.
__deets__ hat es dir versucht so zu vermitteln, dass du dir die Frage quasi selbst beantwortest.
Das ist gängige Praxis, gerade unter Programmierern.
Es wird in der Didaktik oft erfolgreich eingesetzt. Der Lernprozess setzt erst ein, wenn man sich
selbst Gedanken über ein Problem macht. Wenn man nicht weiter kommt, fragt man nach weiteren
Lösungsvorschlägen, aber letztendlich wird man mit dieser Methode zum Ziel geführt und hat Teil­as­pekte
selbst gelöst.

Ja, ich könnte jetzt 2 Minuten nachdenken und eine fertige Lösung posten.
Es würde weder dir, noch meinem Ego helfen.

Re: Geschachtelte Schleifen

Verfasst: Dienstag 10. April 2018, 10:37
von Hase
:shock:

Was ist denn hier los? Der Geschlechterkampf scheint vor gar nichts mehr halt zu machen.