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
Wofür ist die "For Schleife"
Hi,
ich benutze sie meistens in dieser Form:
oder wenn Du mit listen arbeiten willst:
gibt bestimmt noch andere Anwendungsfälle, aber ich bin doch auch nur noob
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
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
danke, das weiß ich ja (also wie die aussehen soll) nur ich weiß nicht wofür die ist. Kontrolliert die etwas? wenn ja, was?
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):
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
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;
Code: Alles auswählen
for i in Liste:
Tue etwas mit i
Viel Spaß beim Programmieren.
Gruß,
Christian
zu dem Listen Beispiel:
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...
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
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...
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..
Ich lene mit dem:
"Python- Zutorium" von Guido von Rossman (stand: 30.04.1999)
Das ist mir auch ein wenig zu alt..
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
Schau mal im Pythonwiki, da gibt es Info auf Deutsch und Du findest hoffentlich was für Dich.
Gruß,
Christian
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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: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
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
Die While Schleife ist dir klar, "Gast"?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi Leonidas!
Und so furchtbar ist das nun auch wieder nicht . Die Start-0 kann man natürlich weglassen, aber für so etwas
ist das (für pre-enumerate Python-Versionen) schon nützlich
Gruß, mawe
Du hast aber schon den ganzen Beitrag von knekke gelesen, ja?Leonidas hat geschrieben: Das meinst du doch nicht ernst, oder? ...
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])
Gruß, mawe
Doch!Das meinst du doch nicht ernst, oder?
Danke an mawe, der ja schon ein entlastendes Beispiel gebracht hat. (Die 0 werde ich künftig weglassen.... )
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).Das ist doch Java-Code in Python-Form!
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?
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi knekke!
Gruß, mawe
Seit Python-Version 2.3 (ich glaube jedenfalls 2.3) gibts enumerate(). Alle Versionen davor sind pre-enumerateknekke hat geschrieben: P.S.: Was sind pre-enumerate Python-Versionen?
Code: Alles auswählen
for i,j in enumerate(liste):
print "%i-tes Element: %s" % (i, str(j))
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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 Performancevorteilemawe hat geschrieben:Seit Python-Version 2.3 (ich glaube jedenfalls 2.3) gibts enumerate(). Alle Versionen davor sind pre-enumerate
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
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
PS: Könntet ihr bitte aufhören von Java zu reden, ich hab grad gegessen
Gruß, mawe
Ja?Leonidas hat geschrieben: Es gibt auch noch die Möglichjkeit zip() zu nutzen
Es gibt Leute die nicht immer die neuesten Versionen verwenden können, und es soll auch welche geben, die nicht immer die neuesten Features kennenLeonidas hat geschrieben: warum nimmt man dann nicht gleich die Features von Python 2.4
PS: Könntet ihr bitte aufhören von Java zu reden, ich hab grad gegessen
Gruß, mawe
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Eigentlich ist es mehr eine Art es zu misbrauchen, aber ich demonstriere es trotzdem mal:mawe hat geschrieben:Ja?Leonidas hat geschrieben: Es gibt auch noch die Möglichjkeit zip() zu nutzen
Code: Alles auswählen
buchstaben = ['abc', 'def', 'ghi']
for sequenz, inhalt in zip(range(len(buchstaben)), buchstaben):
print sequenz, inhalt
Für die zweiteren gibt es eine Seite . Allerdings ist enumerate() dort noch nicht beschrieben. Lust sich dort zu verewigen?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
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice