range() und for
Die for-Schleife in Python arbeitet ähnlich wie die in Unix-Shells: Anstelle von einer Startbedingung zu einer Endbedingung hochzuzählen, wobei die Schrittweise festlegbar ist, wie das bei C der Fall ist, geht Pythons for durch eine Menge von Elementen, wobei es egal ist, von welchem Typ diese Elemente sind:
Möchte man irgendwas hochzählen, braucht man eine Hilfe, und genau dafür ist range() da:
Der Ausdruck range(a,b) bedeutet, zähle von a nach b, ein range(b) ist also gleichbedeutend mit range(0,b).
Es gibt noch eine dritte Möglichkeit, mit range() zu arbeiten:
>>> for x in ("Douglas Adams","Per Anhalter durch die Galaxis",42):
... print x
...
Douglas Adams
Per Anhalter durch die Galaxis
42
Beim Programmieren ist das natürlich angenehm, weil man Tupel und Listen einfach nur angeben muß, um alle darin enthaltenen Elemente verarbeiten zu können. Möchte man irgendwas hochzählen, braucht man eine Hilfe, und genau dafür ist range() da:
>>> for x in range(10):
... print x,
...
0 1 2 3 4 5 6 7 8 9
Es fällt auf, das range bei 0 anfängt zu zählen, aber bei 9 aufhört, statt bis 10. Möchte man eine Ausgabe inklusive der 10, und die 0 möchte man auch nicht sehen, muß man entsprechende Änderungen vornehmen:
>>> max=10
>>> for x in range(1,max+1):
... print x,
...
1 2 3 4 5 6 7 8 9 10
max ist die Obergrenze, bis zu der ich zählen möchte, und da ich diese inklusive haben möchte, inkrementiere ich den Ausdruck von max um 1.Der Ausdruck range(a,b) bedeutet, zähle von a nach b, ein range(b) ist also gleichbedeutend mit range(0,b).
Es gibt noch eine dritte Möglichkeit, mit range() zu arbeiten:
>>> for x in range(1,32,2):
... print x,
...
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31
Der dritte Wert gibt also die Schrittweite an, mit der hochgezählt werden soll. Übrigens funktioniert nicht die Kombination range(Obergrenze,Schrittweite), weil Python hier nicht wissen kann, ob nicht range(Startwert,Obergrenze) gemeint ist. Allerdings wird Python hier auch nicht sauer und haut einem Fehlermeldungen um die Ohren, es passiert nur nichts:
>>> for x in range(32,2):
... print x,
...
>>>
range() funktioniert natürlich auch "subtrahierend:", wobei hier die Schrittweite auf jeden Fall angegeben werden muß, weil Python ansonsten davon ausgeht, dass wir eine Schrittweite von +1 haben wollen. Warum das so ist, werden wir später noch sehen:
>>> for countdown in range(10,-1):
... print countdown
...
>>> for countdown in range(10,-1,-1):
... print countdown,
...
10 9 8 7 6 5 4 3 2 1 0
for ist bei weitem nicht das einzige Einsatzgebiet für range(), vielmehr können hier auch Listen mit befüllt werden:
>>> countdown=range(10,-1,-1)
>>> countdown
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
cptsalek - 16. Mai, 14:27
Wünsche trotzdem weiterhin alles Gute.
Es freut mich
Für mich sind sie eine Möglichkeit, das gelernte in kompackter Form aufzubereiten, auch, um hinterher nochmal nachschlagen zu können.
Dabei blogge ich gerade alles, was ich hier auf der Platte liegen habe, wobei ich fast durch bin.
Danach gibts auch wieder andere Themen, versprochen. :-)