Wofür ist die "For Schleife"

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
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
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

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 ;-)
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?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

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...
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..
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Gast

Vielen Dank, auch für deinen Beitrag. :? Ich schaue mich dann mal um.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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"?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

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?
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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..
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten