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? :oops:

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):

Code: Alles auswählen

for i in Liste:
    Tue etwas mit i
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 :wink:. 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 :wink:

Gruß, mawe

Verfasst: Montag 4. April 2005, 08:39
von knekke
Das meinst du doch nicht ernst, oder?
Doch! :lol:
Danke an mawe, der ja schon ein entlastendes Beispiel gebracht hat. (Die 0 werde ich künftig weglassen.... :wink: )
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 :wink:

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 :wink:
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 8) . Allerdings ist enumerate() dort noch nicht beschrieben. Lust sich dort zu verewigen?