Geschachtelte Schleifen

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
Benutzeravatar
CoderGirl
User
Beiträge: 74
Registriert: Samstag 22. April 2017, 17:47

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
Nur ein Mädchen, das nie so viel weiss, wie die Jungs :ugeek:
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@CoderGirl: Code sagt mehr als tausend Worte. Eventuell kannst Du `filter` benutzen.
Benutzeravatar
CoderGirl
User
Beiträge: 74
Registriert: Samstag 22. April 2017, 17:47

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..
Nur ein Mädchen, das nie so viel weiss, wie die Jungs :ugeek:
Benutzeravatar
CoderGirl
User
Beiträge: 74
Registriert: Samstag 22. April 2017, 17:47

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
Nur ein Mädchen, das nie so viel weiss, wie die Jungs :ugeek:
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

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?
Benutzeravatar
CoderGirl
User
Beiträge: 74
Registriert: Samstag 22. April 2017, 17:47

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
Nur ein Mädchen, das nie so viel weiss, wie die Jungs :ugeek:
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Benutzeravatar
CoderGirl
User
Beiträge: 74
Registriert: Samstag 22. April 2017, 17:47

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
Nur ein Mädchen, das nie so viel weiss, wie die Jungs :ugeek:
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Benutzeravatar
CoderGirl
User
Beiträge: 74
Registriert: Samstag 22. April 2017, 17:47

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
Nur ein Mädchen, das nie so viel weiss, wie die Jungs :ugeek:
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Benutzeravatar
CoderGirl
User
Beiträge: 74
Registriert: Samstag 22. April 2017, 17:47

ich haue hier ab.

wie in allen IT foren....
Nur ein Mädchen, das nie so viel weiss, wie die Jungs :ugeek:
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

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
Benutzeravatar
DeaD_EyE
User
Beiträge: 1017
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

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.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Hase
User
Beiträge: 101
Registriert: Donnerstag 1. Oktober 2009, 15:17
Wohnort: Bremer Speckgürtel

:shock:

Was ist denn hier los? Der Geschlechterkampf scheint vor gar nichts mehr halt zu machen.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1017
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Keine Ahnung ob Codingirl so drauf ist, wie ich zuvor beschrieb.

Mittlerweile ist der Kampf der Geschlechter in den Unis angekommen.
Wehe du genderst deine Hausarbeit nicht, sonst gibt es Punkteabzug.
Die Ideologie vergiftet den Verstand. Sekundär verstümmelt es die Sprache.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten