Laufvariablen bei for Schleife auslassen

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
mep
User
Beiträge: 17
Registriert: Montag 15. Mai 2006, 15:58

Mittwoch 31. Mai 2006, 15:33

Hallo,

ich habe folgendes Problem:

Code: Alles auswählen

for i in range(1,10):
   if i == 5 or i == 6:
      # hier soll eine Anweisung rein, dass in der for-Schleife mit i = 7 weitergemachen werden soll
   else:
      statement
gibt es da irgendwas, wie ich i = 5 bzw. i = 6 auslassen kann?
WICHTIG: nur im vereinfachten Beispiel trifft dies auf 5 und 6 zu. In Wirklichkeit wird in der if-Abfrage was abgefragt, was nichts mit der Schleife zu tun hat.
Kann mir bitte jemand weiterhelfen.

Gruß, mep
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 31. Mai 2006, 15:40

mep hat geschrieben:

Code: Alles auswählen

for i in range(1,10):
   if i == 5 or i == 6:
      # hier soll eine Anweisung rein, dass in der for-Schleife mit i = 7 weitergemachen werden soll
   else:
      statement
Hi mep!

Du kannst das Schlüsselwort pass rein tun, dann wird nichts gemacht.

Code: Alles auswählen

for i in range(1,10):
   if i == 5 or i == 6:
      pass # tu nichts
   else:
      statement
Allerdings könntest du auch deine Prüfung umdrehen.

Code: Alles auswählen

if i not in (5, 6):
    statement
oder

Code: Alles auswählen

if i <> 5 and i <> 6:
    statement
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
mep
User
Beiträge: 17
Registriert: Montag 15. Mai 2006, 15:58

Mittwoch 31. Mai 2006, 16:20

der Vorschlag mit pass hört sich ganz vielversprechend an, leider muss ich 2 Laufvariablen in Folge auslassen. Hier noch einmal mein Problem etwas konkreter:

Code: Alles auswählen

def blabla():
   if irgendwas:
      statements
   else:
      t1 = 0
      t2 = 0
   return t1, t2

def main():
   x = #"irgend eine zahl"
   tr1 = 1
   tr2 = 1
   for i in range(1,x):
      if tr1 == 0:
         tr1 = 1
         pass
      if tr2 == 0:
         tr2 = 1
         pass
      else:
         s =  blabla()  #hier macht er immer noch mit den zu überspringenden laufvariablen weiter
         tr1, tr2 = s
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 31. Mai 2006, 17:12

Du weißt, das du bei range auch ein step angeben kannst, ja?

siehe http://docs.python.org/lib/built-in-funcs.html#l2h-56

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mep
User
Beiträge: 17
Registriert: Montag 15. Mai 2006, 15:58

Mittwoch 31. Mai 2006, 18:13

das mit step ist mir bekannt, bringt mir in dem Fall leider nichts, da sich erst beim Ablauf der Schleife herausstellt, ob und wann ich die beiden Laufvariablen auslassen will. Ansonsten würde es passen.
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 31. Mai 2006, 18:16

Nebenbei... Ich würde dazu continue nehmen... :wink:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mep
User
Beiträge: 17
Registriert: Montag 15. Mai 2006, 15:58

Donnerstag 1. Juni 2006, 08:24

mit continue klappts. Ich hab zwar schon irgendwann gelesen, dass es das continue gibt, wenn man es dann aber zum ersten mal braucht, dann fallen einem die richtigen Lösungen nicht ein. Vor allem mir als totalem Programmieranfänger gehts so.
Vielen Dank für die Antworten!
Gruß, mep
Antworten