break - Bricht meinen Willen :(

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
Gunnar
User
Beiträge: 68
Registriert: Samstag 23. Oktober 2004, 08:59

Moin !
Ich bin es mal wieder. Diesmal allerdings mit einem eindeutigen Problem :
Anscheinend bricht Python mit break nicht nur aus der inneren for-Schleife aus, sondern aus beiden for-Schleifen.

Weiß jemand Rat ?

Code: Alles auswählen

def iterate_second_value(edl_list, index_list):
    edl_list_only_second_value = []
    for each_index in index_list:
        each_index_alone = each_index[0]
        del edl_list[:each_index_alone]
        for x in edl_list:
            try:
                if x[0] == "*" and x[1] == "FROM" and x[2] == "CLIP" and x[3] == "NAME:":
                    edl_list_only_second_value.append(x)
                    break
                else:
                    continue
            except IndexError:
                continue
        return edl_list_only_second_value
In der Doku steht ja, daß break immer nur aus der engsten Schleife ausbricht.

Mfg Gunnar
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich nehme mal an, dass das finale return in der äußeren for Schleife sie Schleife beendet, nicht das break in der inneren.

Wäre aber mal gut, wenn du einen Funktionsaufruf postest, so kann ich sie auch mal testen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Gunnar
User
Beiträge: 68
Registriert: Samstag 23. Oktober 2004, 08:59

Du hast Recht, das war es.
Allerdings hab' ich noch einen logischen Fehler drin, aber das bekomme ich schon hin.

Bis zum nächsten Mal !

Gunnar

P.S.
Vielen Dank für den guten Support, auch wenn ich manchmal so seltsame Problembeschreibungen abgebe. Da sind meine Synapsen meist schon so verknotet, daß nur noch ich meine Beiträge ansatzweise verstehe :wink:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Gunnar hat geschrieben:Vielen Dank für den guten Support, auch wenn ich manchmal so seltsame Problembeschreibungen abgebe. Da sind meine Synapsen meist schon so verknotet, daß nur noch ich meine Beiträge ansatzweise verstehe :wink:
Also diese war perfekt verständlich, nur halt der aufruf fehlte, aber dazu hätte ich auch irgendwie selbst kommen können. Schlimmer siehts mit meinen Beschreibungen aus :)

Hach, endlich auch mal ein Problem gelöst 8)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Auch hier nochmal von mir eine kleine Verschönerung:

Code: Alles auswählen

def iterate_second_value(edl_list, index_list):
  edl_list_only_second_value = []
  i_alone = index_list[0][0]
  del edl_list[:i_alone]
  for x in edl_list:
    try:
      if x[:4] == ["*", "FROM", "CLIP", "NAME:"]:
        edl_list_only_second_value.append(x)
    except IndexError:
      pass
  return edl_list_only_second_value
Ich hab jetzt die äußerste for-Schleife entfernt, weil in ihr ein return stand, dass die Schleife eh nach dem ersten durchlauf abgebrochen hätte.
Ich weiß natürlich nicht, was deine Funktion genau machen soll, aber vielleicht war ja an der Stelle der logische Fehler, den du suchst?
Benutzeravatar
Gunnar
User
Beiträge: 68
Registriert: Samstag 23. Oktober 2004, 08:59

hehe Henning,

und ich überlegte die ganze Zeit in welchem Hack ich das Snippet verwendet habe...bis ich sah, dass das ein Beitrag von Anfang 2005 war. ;)

Aber weiter so,
meine Programme/Hacks funktionieren meist, sehen aber total hässlich aus. Das würde ich gerne ändern, deshalb hier der Aufruf :

Braucht jemand Hilfe bei seinen Projekten ? Ich würde als Gegenleistung nur Verbesserungen meines Codes wollen...

Meldet euch gerne mal per PN, da der Thread sonst ja völlig Offtopic wird ;)

Gruß,
Gunnar
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Naja, also ne helfende Hand könnte ich immer gebrauchen, bloß wenn ich den Code ah nochmal komplett durcharbeiten muss, spart mir das ja auch keine Zeit :-/

Habe im Moment aber auch nichts, was Sinn macht zu "öffnen", wollte aber Anfang nächsten Jahres eventuell was starten, bzw. bei nem anderen Projekt mitmachen. Bis da hin kannst du also noch ein bisschen üben, dann bist du natürlich herzlich eingeladen, dich zu beteiligen.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

@Gunnar: Wenn du das "return" durch "yield" ersetzt, hast du den gewünschten Iterator, und die schleife wird nach dem yield auch fortgesetzt.
Antworten