Seite 1 von 1
Wofür ist die "For Schleife"
Verfasst: Samstag 2. April 2005, 09:21
von Gast
Hallo liebes Forum,
Ich lerne gerade Python und weiß allerdings nicht wofür die For schleife gut ist.
Kann mir das jmd. Erklären?
MfG Gast
Verfasst: Samstag 2. April 2005, 09:44
von knekke
Hi,
ich benutze sie meistens in dieser Form:
Code: Alles auswählen
for zahl in range(0,9): # statt zahl kannst du auch irgendwas schreiben
print zahl #oder mach was anderes
oder wenn Du mit listen arbeiten willst:
Code: Alles auswählen
liste = ["eins","wurst","blabla",8,9]
for e in range(0, len(liste)): #e ist frei wählbar
print liste[e] #mach was du willst
gibt bestimmt noch andere Anwendungsfälle, aber ich bin doch auch nur noob

Verfasst: Samstag 2. April 2005, 10:55
von Gast
danke, das weiß ich ja (also wie die aussehen soll) nur ich weiß nicht wofür die ist. Kontrolliert die etwas? wenn ja, was?
Verfasst: Samstag 2. April 2005, 11:11
von CM
Hi
Python oder eine andere Programmiersprache - jede hat so ein Konstrukt wie eine For-Schleife oder eine Do-Schleife oder so was. Wozu also? Damit man über etwas "iterieren" kann. "Iteration"? Also eine "Wiederholung", ein "über-etwas-immer-wieder-Gehen". Schau mal unter
Wikipedia wegen der Definition (etwas weiter unten, unter "Informatik" auf dieser Seite).
Und was macht man damit? Nun Du hast zum Beispiel eine Liste mit irgendwelchen Objekten, z.B. Liste = [o1,o2,o3]. Dann kannst Du, wenn Du mit allen Objekten in der Liste dasselbe machen willst so etwas schreiben (Pseudocode):
Code: Alles auswählen
Tu mit Liste[0] etwas;
Tu mit Liste[1] etwas;
Tu mit Liste[2] etwas;
Oder Du benutzt ein Konstrukt wie die For-Schleife (Python-Pseudocode):
Du siehst: So eine Schleife macht den Code übersichtlicher, kürzer und das Leben als Programmierer einfacher. Außerdem gibt es da immer noch so den einen oder anderen zusätzlichen Aspekt, aber das lernst Du sicher noch so nach und nach.
Viel Spaß beim Programmieren.
Gruß,
Christian
Verfasst: Samstag 2. April 2005, 11:22
von knekke
zu dem Listen Beispiel:
Code: Alles auswählen
print liste[0]
print liste[1]
print liste[2]
print liste[3]
print liste[4]
print liste[5]
#.....
#macht genau das gleiche wie:
for element in range(0,len(liste)):
print liste[element]
#macht genau das gleiche wie:
for element in liste:
print element
nun stell dir vor Deine Liste wäre ewig lang....
da ist die for-schleife doch eine willkommene Abkürzung!
Probier doch einfach mal ein bisschen rum. Es gibt auch haufenweise Tutorials und in der Python-Doku steht auch was möchte ich wetten...
Verfasst: Samstag 2. April 2005, 11:46
von Gast
Danke für die netten und Informativen antworten, jetzt habe ich das auch verstanden.
Ich lene mit dem:
"Python- Zutorium" von Guido von Rossman (stand: 30.04.1999)
Das ist mir auch ein wenig zu alt..
Verfasst: Samstag 2. April 2005, 12:18
von CM
Oh je! Mir schwant böses: Meinst Du etwa die deutsche Übersetzung des Tutorials zu Version 1.5.2?
Schau mal im
Pythonwiki, da gibt es Info auf Deutsch und Du findest hoffentlich was für Dich.
Gruß,
Christian
Verfasst: Samstag 2. April 2005, 20:34
von Gast
Vielen Dank, auch für deinen Beitrag.

Ich schaue mich dann mal um.
Verfasst: Sonntag 3. April 2005, 13:57
von Leonidas
knekke hat geschrieben:Code: Alles auswählen
liste = ["eins","wurst","blabla",8,9]
for e in range(0, len(liste)): #e ist frei wählbar
print liste[e] #mach was du willst
Das meinst du doch nicht ernst, oder? Das ist doch Java-Code in Python-Form! Ich vermute sogar dass das noch langsamer ist als folgendes:
Code: Alles auswählen
liste = ["eins","wurst","blabla",8,9]
for e in liste: #e ist frei wählbar
print e #mach was du willst
Zu CM's Erklärung ist kaum noch etwas hinzuzufügen
Die While Schleife ist dir klar, "Gast"?
Verfasst: Sonntag 3. April 2005, 14:23
von mawe
Hi Leonidas!
Leonidas hat geschrieben:
Das meinst du doch nicht ernst, oder? ...
Du hast aber schon den ganzen Beitrag von knekke gelesen, ja?
Und so furchtbar ist das nun auch wieder nicht

. Die Start-0 kann man natürlich weglassen, aber für so etwas
Code: Alles auswählen
for i in range(len(liste)):
print "%i-tes Element: %s" % (i, str(liste[i])
ist das (für pre-enumerate Python-Versionen) schon nützlich
Gruß, mawe
Verfasst: Montag 4. April 2005, 08:39
von knekke
Das meinst du doch nicht ernst, oder?
Doch!
Danke an mawe, der ja schon ein entlastendes Beispiel gebracht hat. (Die 0 werde ich künftig weglassen....

)
Das ist doch Java-Code in Python-Form!
Dann hätte ich mich evtl. doch für Java entscheiden sollen, wenn ich es schon so im Blut hab (hab nie ne Java-source gesehen).
Aber im ernst, was ist denn daran so schlimm (Du sprichst die performance an), und wie machst Du das denn "normalerweise".
Ich bin doch nur Freizeit-Pythonier....
P.S.: Was sind pre-enumerate Python-Versionen?
Verfasst: Montag 4. April 2005, 10:31
von mawe
Hi knekke!
knekke hat geschrieben:
P.S.: Was sind pre-enumerate Python-Versionen?
Seit Python-Version 2.3 (ich glaube jedenfalls 2.3) gibts
enumerate(). Alle Versionen davor sind pre-enumerate
Code: Alles auswählen
for i,j in enumerate(liste):
print "%i-tes Element: %s" % (i, str(j))
Gruß, mawe
Verfasst: Montag 4. April 2005, 12:20
von Leonidas
mawe hat geschrieben:Seit Python-Version 2.3 (ich glaube jedenfalls 2.3) gibts
enumerate(). Alle Versionen davor sind pre-enumerate

Es gibt auch noch die Möglichjkeit zip() zu nutzen, aber wenn dich keiner zwingt Python 2.2 zu verwenden, warum nimmt man dann nicht gleich die Features von Python 2.4. Hat unter anderem auch Performancevorteile
knekke: du glaubst gar nicht, wie umständlich es ist, in Java eine Datei zu öffnen. Ich kann mich noch etwas an den BufferedStreamReader und den FileReader erinnern..
Verfasst: Montag 4. April 2005, 12:28
von mawe
Hi!
Leonidas hat geschrieben:
Es gibt auch noch die Möglichjkeit zip() zu nutzen
Ja?
Leonidas hat geschrieben:
warum nimmt man dann nicht gleich die Features von Python 2.4
Es gibt Leute die nicht immer die neuesten Versionen verwenden können, und es soll auch welche geben, die nicht immer die neuesten Features kennen
PS: Könntet ihr bitte aufhören von Java zu reden, ich hab grad gegessen
Gruß, mawe
Verfasst: Montag 4. April 2005, 12:43
von Leonidas
mawe hat geschrieben:Leonidas hat geschrieben:
Es gibt auch noch die Möglichjkeit zip() zu nutzen
Ja?
Eigentlich ist es mehr eine Art es zu misbrauchen, aber ich demonstriere es trotzdem mal:
Code: Alles auswählen
buchstaben = ['abc', 'def', 'ghi']
for sequenz, inhalt in zip(range(len(buchstaben)), buchstaben):
print sequenz, inhalt
Aber für sowas ist, wie gesagt, enumerate() weitaus besser.
mawe hat geschrieben:Es gibt Leute die nicht immer die neuesten Versionen verwenden können, und es soll auch welche geben, die nicht immer die neuesten Features kennen

Für die zweiteren gibt es eine
Seite 
. Allerdings ist enumerate() dort noch nicht beschrieben. Lust sich dort zu verewigen?