Programmieren mit Python â erste Schritte
Programmieren mit Python â erste Schritte
Programmieren mit Python â erste Schritte
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Programmieren</strong> <strong>mit</strong> <strong>Python</strong> – <strong>erste</strong> <strong>Schritte</strong><br />
Bernd Grave<br />
28. März 2007<br />
Inhaltsverzeichnis<br />
1 Bevor es richtig losgeht 2<br />
1.1 <strong>Python</strong> installieren . . . . . . . . . . . . . . . . . . . . . . . . 2<br />
1.2 Texte über <strong>Python</strong> - zum Nachschlagen . . . . . . . . . . . . 2<br />
1.3 Dateinamen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />
2 Ein- und Ausgabe 2<br />
2.1 Ausgabe auf dem Bildschirm . . . . . . . . . . . . . . . . . . 2<br />
2.2 Eingabe über die Tastatur . . . . . . . . . . . . . . . . . . . . 2<br />
3 Entscheidungen: wenn ... dann ... sonst ... 3<br />
4 Ausnahmen: try ... except ... 3<br />
5 Was sind eigentlich Variablen? 4<br />
5.1 Die Sache <strong>mit</strong> den Schubladen . . . . . . . . . . . . . . . . . . 4<br />
5.2 Zahlen und Zeichenketten ineinander umwandeln . . . . . . . 6<br />
6 Wiederholungen: ... und noch einmal 7<br />
6.1 for-Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
6.2 while-Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
7 Datenstrukturen 9<br />
7.1 Wörterbücher . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
7.2 Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
8 Funktionen 13<br />
1
1 Bevor es richtig losgeht<br />
1.1 <strong>Python</strong> installieren<br />
Man kann <strong>Python</strong> kostenlos aus dem Internet beziehen. Dazu geht man auf<br />
die folgende Seite: http://www.python.org/download/releases/2.5/<br />
Als Benutzer(in) des Betriebssystems Windows muss man die Installationsdatei<br />
<strong>Python</strong>-2.5.msi herunterladen. Zur Installation startet man einfach<br />
die heruntergeladene Datei.<br />
1.2 Texte über <strong>Python</strong> - zum Nachschlagen<br />
http://abop-german.berlios.de/<br />
http://www.silverymoon.de/uni/python/index.html<br />
http://www.thomas-guettler.de/vortraege/python/einfuehrung.html<br />
http://www.python.org/doc/<br />
1.3 Dateinamen<br />
<strong>Python</strong>-Dateien sollten .py als Dateiendung besitzen. Zum Beispiel quiz.py<br />
ist ein guter Dateiname.<br />
2 Ein- und Ausgabe<br />
2.1 Ausgabe auf dem Bildschirm<br />
Die Anweisung<br />
print ’Ich heiße Otto.’<br />
im Quelltext eines Programms bewirkt, dass der Satz auf den Bildschirm<br />
geschrieben wird. Dasselbe erreicht man auch <strong>mit</strong> der folgenden Anweisung.<br />
print "Ich heiße Otto."<br />
Da<strong>mit</strong> auch die deutschen Sonderbuchstaben eine Chance haben, richtig<br />
angezeigt zu werden, fügt man am Anfang der Datei die folgende Zeile ein.<br />
# -*- coding: cp1252 -*-<br />
2.2 Eingabe über die Tastatur<br />
Da<strong>mit</strong> ein Computerprogramm den Benutzer nach dem Vornamen fragt,<br />
kannst du folgende Anweisung in den Quelltext des Programms schreiben.<br />
name = raw_input(’Wie heißt du? ’)<br />
2
Das Programm schreibt dann die Frage ”<br />
Wie heißt du?“ auf den Bildschirm<br />
und wartet auf eine Eingabe von der Tastatur. Wenn du z.B. ”<br />
Michaela“ eingegeben<br />
und Enter gedrückt hast, speichert das Programm die Zeichenkette<br />
Michaela in der Variablen name.<br />
Das einfache = bedeutet, dass der Variablen name etwas zugeordnet wird –<br />
und zwar in diesem Fall das Ergebnis der Tastatureingabe.<br />
3 Entscheidungen: wenn ... dann ... sonst ...<br />
if name == "Bodo":<br />
print "Hallo."<br />
else:<br />
print "Ich kenne dich nicht."<br />
Das doppelte == wird in <strong>Python</strong> für Vergleiche benutzt. Hier wird der Inhalt<br />
der Variablen name <strong>mit</strong> der Zeichenkette Bodo verglichen. Wenn in der<br />
Variablen name der Name Bodo gespeichert ist, dann macht das Programm<br />
all das, was danach eingerückt ist – also in diesem Fall schreibt es ”<br />
Hallo.“<br />
auf den Bildschirm. Anderenfalls macht das Programm all das, was hinter<br />
else: eingerückt ist. Achtung: Eine Zeile <strong>mit</strong> if und eine Zeile <strong>mit</strong> else<br />
müssen immer <strong>mit</strong> einem Doppelpunkt enden.<br />
Aufgaben<br />
1. Schreibe ein Programm, dass den Computer dazu veranlasst folgendes<br />
zu tun: Der Computer fragt dich erst einmal nach deinem Namen.<br />
Wenn du deinen Vornamen eingegeben hast, dann reagiert der Computer<br />
und schreibt ”<br />
Hallo. wie geht es dir?“. Wenn du einen anderen<br />
Namen eingegeben hast, dann reagiert der Computer und schreibt ”<br />
Ich<br />
kenne dich nicht. Dies ist nicht dein Computer.“<br />
2. Programmiere ein kleines Quiz. Dabei soll das Programm die Fragen<br />
stellen und auch erkennen, ob die eingegebene Antwort richtig oder<br />
falsch ist und entsprechend reagieren.<br />
4 Ausnahmen: try ... except ...<br />
Ihr kennt die Situation, dass ein Programm fehlerhaft ist und irgendwann abgebrochen<br />
wird. Dann erscheinen normalerweise ein paar mehr oder weniger<br />
kryptische Zeilen in roter Farbe in dem Fenster, wo eigentlich das Programm<br />
ausgeführt werden sollte. Das ist die Standardbehandlung für Laufzeitfehler.<br />
Das sind Fehler, die erst beim Ausführen auftreten. Das kann man auch<br />
ändern. Hier das vermutlich meistgebrauchte Beispiel:<br />
3
while True:<br />
try:<br />
eingabe = raw_input("Eine Zahl eingeben: ")<br />
zahl = int(eingabe)<br />
break<br />
except ValueError:<br />
print "Bitte eine ganze Zahl eingeben."<br />
while True: heißt soviel wie, solange die Welt nicht untergegangen ist, wiederhole<br />
das was danach eingerückt ist. Wenn in dem nach try: eingerückten<br />
Block ein Fehler von der Art ValueError auftritt, dann wird das Programm<br />
nicht abgebrochen, sondern der eingerückte Block nach except wird ausgeführt.<br />
Da<strong>mit</strong> nicht immer wieder nach einer Zahl gefragt wird – schließlich<br />
befinden wir uns in einer Endlosschleife –, muss das Programm nach erfolgreicher<br />
Umwandlung in eine Zahl aus der Schleife ausbrechen. Das geschieht<br />
durch break.<br />
Noch ein anderes Beispiel ohne Endlosschleife und break.<br />
# -*- coding: cp1252 -*-<br />
fehler = 0<br />
eingabe = raw_input(’Geben Sie eine Zahl zwischen 113 und 254 ein. ’)<br />
try:<br />
zahl = int(eingabe)<br />
except:<br />
fehler = 1<br />
if fehler==1:<br />
print ’Das war keine Zahl.’<br />
else:<br />
if zahl > 113 and zahl < 254:<br />
print ’Danke.’<br />
else:<br />
print ’Du solltest noch mal zählen üben.’<br />
Hier wird im Fall einer falschen Eingabe nur die Variable fehler auf den<br />
Wert 1 gesetzt. Dann geht das Programm normal weiter. Die Ausgabe von<br />
Das war keine Zahl.“ passiert im ganz normalen Programmablauf. Am besten<br />
probierst du beide Programme<br />
”<br />
aus.<br />
5 Was sind eigentlich Variablen?<br />
5.1 Die Sache <strong>mit</strong> den Schubladen<br />
Im Abschnitt 2.2 war schon von einer Variablen die Rede. Wenn zum Beispiel<br />
etwas über die Tastatur eingegeben wird, dann soll sich das gerade<br />
laufende Computerprogramm die Eingabe vielleicht merken. Dazu muss es<br />
4
die Eingabe irgendwo ablegen, so dass sie jederzeit wiedergefunden werden<br />
kann. Genau das passiert in der folgenden Zeile.<br />
buchtitel = raw_input(’Titel deines Lieblingsbuches: ’)<br />
Der Computer bewahrt alles, was über die Tastatur eingegeben wird, in einer<br />
Schublade“ <strong>mit</strong> der Aufschrift buchtitel auf. Genauer gesagt: Alles was<br />
”<br />
eingegeben wird, nachdem das Programm bei der obigen Zeile angekommen<br />
ist und solange noch nicht die Enter-Taste gedrückt wurde, landet in der<br />
buchtitel-Schublade. Statt Schublade spricht man in der Informatik von<br />
Variablen. Wenn man etwas Neues in eine Informatik-Schublade legt, wird<br />
automatisch alles, was bislang darin war entsorgt.<br />
Oben ist ein Beispiel angeführt, wie man den Programm-Benutzer dazu auffordern<br />
kann, etwas in die Schublade zu legen. In der Informatik würde man<br />
eher sagen etwas in der Variablen speichern“. (In der Mathematik sagt man<br />
”<br />
etwas in eine Variable einsetzen“.)<br />
”<br />
Man kann auch direkt das Programm da<strong>mit</strong> beauftragen, etwas in einer<br />
Variablen zu speichern. Zuerst kommt die Variable, in der etwas gespeichert<br />
werden soll, dann ein Gleichheitszeichen und schließlich der Wert, der in der<br />
Variablen gespeichert werden soll.<br />
buchtitel = ’Lord of the rings’<br />
name = "Otto"<br />
lieblingszahl = 17<br />
pi = 3.1415926<br />
a = 5<br />
Hier sieht man auch schon, dass es unterschiedliche Dinge gibt, die man<br />
in Variablen speichern kann. In der Variablen buchtitel wird die Zeichenkette<br />
Lord of the rings gespeichert. Da<strong>mit</strong> das Programm weiß, wo die<br />
Zeichenkette anfängt und wo sie aufhört, muss man Anführungszeichen setzen.<br />
In der Variablen lieblingszahl wird die Zahl 17 gespeichert.<br />
Wenn das Programm den Inhalt einer Schublade wieder ans Licht zerren soll,<br />
muss man dem Programm nur sagen, in welcher Schublade es nachschauen<br />
soll.<br />
print buchtitel, ’ist mein Lieblingsbuch.’<br />
print lieblingszahl<br />
Wenn das Programm rechnen soll, dann passiert oft beides in einem Befehl:<br />
der Computer schaut in einer oder mehreren Schubladen nach und legt das<br />
Ergebnis in eine Schublade hinein.<br />
neue_zahl = 3*lieblingszahl<br />
print a<br />
a = a+1<br />
print a<br />
5
In der <strong>erste</strong>n Zeile wird die Variable lieblingszahl gelesen, der Wert <strong>mit</strong><br />
drei multipliziert und das Ergebnis wird in der Variablen neue_zahl gespeichert.<br />
Die Zeile a=a+1 sieht für einen Mathematiker erst einmal abenteuerlich aus.<br />
Die beiden Seiten der Gleichung sind bestimmt nicht gleich. Es handelt sich<br />
dabei auch gar nicht um eine Gleichung sondern um eine Zuweisung: Die<br />
Schublade a wird geöffnet, die darin enthaltene Zahl wird herausgenommen<br />
und um eins erhöht. Das Ergebnis kommt dann wieder in die selbe Schublade<br />
a. (Bitte ausprobieren.)<br />
5.2 Zahlen und Zeichenketten ineinander umwandeln<br />
Oft ist es nötig, Zeichenketten in Zahlen zu verwandeln.<br />
Stell dir ein Computerspiel vor, das nur für Kinder interessant ist. Das<br />
Computerprogramm möchte Jugendliche ab 16 Jahre warnen, dass sie wahrscheinlich<br />
schon zu groß für das Spiel sind.<br />
alter = raw_input(’Wie alt bist du? ’)<br />
if alter >= 16:<br />
print ’Du bist schon zu groß für dieses Kinderspiel.’<br />
In diesem kleinen Programmstück ist ein Fehler v<strong>erste</strong>ckt. Eine Eingabe <strong>mit</strong><br />
raw_input() liefert immer eine Zeichenkette. In diesem Beispiel sollte in<br />
der Variablen alter allerdings eine Zahl enthalten sein - und zwar höchst<br />
wahrscheinlich eine ganze Zahl (engl.: integer). Also muss man die Zeichenkette,<br />
die von der Tastatur kommt, in eine Zahl umwandeln. Das kann man<br />
auf verschiedene Weise machen. Man kann die Zeichenkette (engl.: string)<br />
von der Tastatur erst einmal in einer Variablen speichern und danach in eine<br />
Zahl verwandeln.<br />
alter_str = raw_input(’Wie alt bist du? ’)<br />
alter = int(alter_str)<br />
if alter >= 16:<br />
print ’Du bist schon zu groß für dieses Kinderspiel.’<br />
Hat der Anwender des Programms beispielsweise die Tasten 1 7 Enter<br />
gedrückt, dann ist, nachdem das Programm gelaufen ist, in der Variablen<br />
alter_str die Zeichenkette ’17’ und in der Variablen alter die Zahl 17<br />
enthalten.<br />
Wenn man sich Tipparbeit sparen will und ganz sicher ist, dass man die<br />
Zeichenkette später sowieso nicht mehr braucht, kann man die <strong>erste</strong>n beiden<br />
Zeilen zu einer zusammenfassen.<br />
alter = int(raw_input(’Wie alt bist du? ’))<br />
if alter >= 16:<br />
print ’Du bist schon zu groß für dieses Kinderspiel.’<br />
6
Frage: Warum stehen am Ende der Eingabezeile zwei schließende Klammern?<br />
Wir halten fest, dass <strong>mit</strong> a=int(b) die Zeichenkette aus der Schublade b<br />
gelesen, in eine Zahl umgewandelt und dann das Ergebnis in der Variablen<br />
a gespeichert wird.<br />
Hätte irgendein Scherzkeks als Alter 16.5 eingegeben, dann wäre die Funktion<br />
int() überfordert. Denn 16.5 ist keine ganze Zahl. Das Programm wäre<br />
<strong>mit</strong> einer Fehlermeldung abgebrochen worden. Kein Problem: Wir ersetzen<br />
einfach int() durch float(). Bei dieser Gelegenheit, gleich noch ein wichtiger<br />
Hinweis: Die Vor- und die Nachkommastellen werden nicht durch ein<br />
Komma, sondern durch einen Punkt getrennt.<br />
Manchmal braucht man auch die umgekehrte Verwandlung einer Zahl in<br />
eine Zeichenkette. Dafür gibt es zwei Funktionen:<br />
ziffernfolge = str(16.5)<br />
ziffernfolge = repr(16.5)<br />
6 Wiederholungen: ... und noch einmal<br />
6.1 for-Schleife<br />
So wie man einen Buttler darum bitten könnte, jedes Porzelanteil in einem<br />
bestimmten Schrank zu putzen, so kann man auch den Computer dazu<br />
auffordern, etwas für jedes Element einer Liste zu tun.<br />
Die Liste der Zahlen 0, 1, 2, 3, 4, 5, 6 heißt in <strong>Python</strong> [0,1,2,3,4,5,6] oder<br />
range(7). Diese Liste enthält also 7 Elemente. Da<strong>mit</strong> sollte auch klar sein,<br />
was <strong>mit</strong> range(24) gemeint ist. Die Liste [’Sonne’, ’Mond’, ’Sterne’]<br />
besteht nicht aus Zahlen, sondern aus Zeichenketten. Sie enthält drei Elemente.<br />
Die Bedeutung und den Gebrauch der for-Schleife erschließt du dir am<br />
besten, indem du das folgende Programm anschaust.<br />
for i in range(7):<br />
print i<br />
for w in [’Sonne’, ’Mond’, ’Sterne’]:<br />
print w<br />
Achtung: Hinter der Liste muss immer ein Doppelpunkt stehen. Die Befehle,<br />
die für alle Elemente der Liste durchgegangen werden sollen, müssen<br />
eingerückt sein.<br />
6.2 while-Schleifen<br />
Es gibt auch Wiederholungen, die so lange ausgeführt werden sollen, bis eine<br />
Bedingung erfüllt ist. Solche Schleifen programmiert man in <strong>Python</strong> <strong>mit</strong> der<br />
Anweisung while.<br />
7
print ’Wie heißt die Hauptstadt von Frankreich?’<br />
antwort = raw_input(’dein Tipp: ’)<br />
while antwort != ’Paris’:<br />
print ’Die Antwort war falsch.’<br />
antwort = raw_input(’neuer Tipp: ’)<br />
print ’Richtig.’<br />
Die Zeile <strong>mit</strong> while könnte man umgangssprachlich etwa so übersetzen: ”<br />
Solange<br />
die Antwort nicht richtig ist, tue folgendes:“ Die beiden eingerückten<br />
Zeilen werde so oft wiederholt, bis jemand auf die Idee kommt, Paris einzugeben.<br />
Wenn man Bedingungen formulieren will, muss man vor allen Dingen vergleichen<br />
können. Deshalb hier eine kleine Tabelle <strong>mit</strong> Vergleichsoperatoren<br />
in <strong>Python</strong>.<br />
Aufgaben<br />
<strong>Python</strong>-Operator Bedeutung Beispiel<br />
== gleich name == ’Sophie’<br />
!= ungleich antwort != ’Paris’<br />
= zahl2<br />
< kleiner a < 7<br />
> größer x > 1.9<br />
1. Schreibe ein Programm, dass folgendes auf den Bildschirm schreibt.<br />
0<br />
6<br />
12<br />
18<br />
24<br />
30<br />
36<br />
42<br />
48<br />
54<br />
60<br />
2. Schreibe ein Programm, dass die Namen der Planeten unseres Sonnensystems<br />
untereinander auf den Bildschirm schreibt. Verwende dazu<br />
eine Schleife.<br />
3. Schreibe ein Programm, dass 13 mal ”<br />
Viel Glück!“ wünscht.<br />
8
4. Überlege, was das folgende Programm für eine Ausgabe auf dem Bildschirm<br />
erzeugt. Prüfe, ob du richtig gelegen hast, indem du das Programm<br />
<strong>mit</strong> <strong>Python</strong> ausführst.<br />
for i in range(10):<br />
print i, ’* 17 = ’, i*17<br />
5. Schreibe ein Programm, dass alle Multiplikationen des kleinen Einmal-eins<br />
auf dem Bildschirm ausgibt.<br />
6. Schreibe ein Programm, dass die Summe der ganzen Zahlen von 1 bis<br />
123 berechnet.<br />
7. Denke dir selber ein kleiens Programm aus, in dem eine for-Schleife<br />
vorkommt.<br />
8. Schreibe ein Programm, dass immer wieder eine Tastatureingabe erwartet<br />
und einliest, bis Ende eingetippt wird.<br />
9. Überlege, was das folgende Programm für eine Ausgabe erzeugt. Führe<br />
das Programm aus. Finde heraus, was len(...) bedeutet.<br />
namensliste = [’Peter’, ’Susanne’, ’Anne’, ’Hans’, ’Tanja’]<br />
for text in namensliste:<br />
print ’Der Name’, text,<br />
print ’besteht aus’, len(text), ’Buchstaben.’<br />
10. Schreibe ein Programm, dass immer wieder die Eingabe eines Wortes<br />
<strong>mit</strong> 5 Buchstaben fordert und erst Ruhe gibt, wenn es eine Eingabe<br />
aus 5 Zeichen bekommen hat.<br />
7 Datenstrukturen<br />
7.1 Wörterbücher<br />
Hier ein paar kleine Beispiele für Wörterbücher.<br />
englisch_deutsch = { ’Haus’ : ’house’,<br />
’Wohnung’ : ’flat’,<br />
’eben’ : ’flat’,<br />
’Küche’ : ’kitchen’ }<br />
telefonbuch = { ’Hans K.’ : ’0511 1596374’,<br />
’Ina Z.’ : ’0551 35674’,<br />
’Andreas M.’ : ’05494 69753’,<br />
’Kerstin D.’ : ’030 296749253’ }<br />
9
# im Katalog steht jeweils die Artikelnummer und der Preis in Euro<br />
katalog = { ’LX 450678’ : 34.95,<br />
’LC 450679’ : 39.95,<br />
’LT 300401’ : 119.00 }<br />
In einem Wörterbuch kann hinter dem Doppelpunkt mehrmals das gleiche<br />
stehen. Vor dem Doppelpunkt darf das nicht sein. Das <strong>erste</strong> Wörterbuch<br />
wäre also umgekehrt <strong>mit</strong> den englischen Wörtern an <strong>erste</strong>r Stelle nicht erlaubt,<br />
weil zweimal ’flat’ vorkommt.<br />
Das was vor dem Doppelpunkt steht heißt Schlüssel. Der Eintrag hinter<br />
dem Doppelpunkt wird Wert genannt. In allen Beispielen hier sind die<br />
Schlüssel Zeichenketten. Man kann aber auch Zahlen als Schlüssel verwenden.<br />
Benutzung von Wörterbüchern<br />
• Eintrag ändern, Eintrag zu einem Wörterbuch hinzufügen:<br />
englisch_deutsch[’Wohnzimmer’] = ’living room’<br />
telefonbuch[’Rolf Z.’] = ’0251 4598349’<br />
Wenn es vorher schon einen Rolf Z. im Wörterbuch gab, wird kein<br />
zweiter hinzugefügt, sondern die Nummer geändert.<br />
• Eintrag aus einem Wörterbuch löschen:<br />
del katalog[’LT 300401’]<br />
• im Wörterbuch nachschlagen - <strong>mit</strong> dem Schlüssel auf den Wert zugreifen:<br />
print ’Die Telefonnummer von Ina ist’, telefonbuch[’Ina Z.’]<br />
Auf diese Weise kann man nur zu dem was vor dem Doppelpunkt steht<br />
auf das was hinter dem Doppelpunkt steht zugreifen. Nicht umgekehrt.<br />
• überprüfen, ob ein Eintrag im Wörterbuch steht:<br />
if ’Felix S.’ in telefonbuch:<br />
print ’Die Telefonnummer von Felix S. lautet’,<br />
print telefonbuch[’Felix S.’]<br />
10
7.2 Listen<br />
... kommen in jeder for-Anweisung vor.<br />
Dir sind schon Listen begegnet. Zum Beispiel [0,1,2,3,4,5,6,7,8,9] und<br />
[’Sonne’,’Mond’,’Milchstraße’]. Für die <strong>erste</strong> Liste kann man auch<br />
range(10) schreiben.<br />
Listen kommen aber auch noch an anderen Stellen vor. In anderen Programmiersprachen<br />
wird eine Liste oft <strong>mit</strong> dem englischen Wort Array bezeichnet.<br />
In Listen dürfen auch verschiedenartige Dinge stehen. Beispiel:<br />
[’Mozart’,1756,1791,’Musiker’,’Salzburg’]<br />
Wenn man <strong>mit</strong> einer Liste arbeiten will, dann braucht die Liste einen Namen.<br />
Beispiel:<br />
# planeten - Liste (enthält Planeten des Sonnensystems)<br />
planeten = [’Merkur’,’Venus’,’Erde’,’Mars’]<br />
Um auf das zweite Element aus der Liste zuzugreifen und es auf den Bildschirm<br />
auszugeben, schreiben man folgende Zeile ins Programm:<br />
print planeten[1]<br />
Wie unschwer zu erraten ist, hat das <strong>erste</strong> Element einer Liste also die<br />
Nummer 0. Achtung: Das ist der Grund, weshalb man sich schnell einmal<br />
um eins verzählt.<br />
Um in der Liste ”<br />
Mars“ durch ”<br />
Milky Way“ zu ersetzen, geht man so vor:<br />
planeten[3] = ’Milky Way’<br />
Benutzung von Listen<br />
Wie man <strong>mit</strong> Listen umgeht, kann man sehr gut dem folgenden Programm<br />
entnehmen. Es stammt aus der <strong>Python</strong>-Einführung ”<br />
A Byte of <strong>Python</strong>“.<br />
einkaufsliste = [’Aepfel’, ’Mangos’, ’Karotten’, ’Bananen’]<br />
print ’Ich habe’, len(einkaufsliste), ’Dinge einzukaufen.’<br />
print ’Diese Dinge sind:’, # Beachte das Komma am Zeilenende<br />
for ding in einkaufsliste:<br />
print ding,<br />
print ’\nIch muss auch Reis einkaufen.’<br />
einkaufsliste.append(’Reis’)<br />
print ’Meine Einkaufsliste ist jetzt’, einkaufsliste<br />
print ’Jetzt werde ich meine Einkaufsliste sortieren.’<br />
einkaufsliste.sort()<br />
11
print ’Die sortierte Einkaufsliste ist’, einkaufsliste<br />
print ’Zuerst werde ich’, einkaufsliste[0], ’kaufen.’<br />
altesding = einkaufsliste[0]<br />
del einkaufsliste[0]<br />
print ’Ich habe’, altesding, ’gekauft.’<br />
print ’Meine Einkaufsliste ist jetzt’, einkaufsliste<br />
Aufgabe zum besseren Verständnis von range()<br />
a) Kopiere die folgenden Zeilen in ein <strong>Python</strong>-Programm und führe es<br />
aus.<br />
print range(17)<br />
print range(5,17)<br />
print range(-5,17)<br />
print range(3,20)<br />
print range(3,20,2)<br />
print range(20,3,-1)<br />
b) Probiere selbst verschiedene Werte aus. Überlege zuerst, was du erwartest<br />
und überprüfe dann, ob du richtig liegst.<br />
c) Formuliere drei Regeln, die genau erklären, welche Listen von den<br />
Befehlen range(a), range(a, b), range(a, b, c) erzeugt werden. Die<br />
Buchstaben a, b, c stehen dabei für beliebige ganze Zahlen.<br />
d) Erzeuge <strong>mit</strong> range() eine Liste für einen Countdown.<br />
e) Erzeuge <strong>mit</strong> range() die Liste der positiven geraden Zahlen bis einschließlich<br />
100.<br />
12
8 Funktionen<br />
Hier ist noch einmal ein Quiz.<br />
# -*- coding: cp1252 -*-<br />
# Variablen<br />
#<br />
# antwort - Zeichenkette (zum Speichern der Tastatureingabe)<br />
print ’Informatik-Quiz\n’<br />
print ’Wonach ist die Computersprache <strong>Python</strong> benannt?’<br />
print ’ a) nach einer Schlange’<br />
print ’ b) nach einer Komikergruppe’<br />
print ’ c) nach einer Sportart’<br />
print ’ d) nach einem Land’<br />
antwort = raw_input(’Bitte geben Sie den Buchstaben der Lösung ein. ’)<br />
if antwort == ’b’:<br />
print ’Richtig.’<br />
else:<br />
print ’Falsch.’<br />
print ’Welches ist die Amtssprache auf der Insel Java?’<br />
print ’ a) Chinesisch’<br />
print ’ b) Java’<br />
print ’ c) Javanisch’<br />
print ’ d) Indonesisch’<br />
antwort = raw_input(’Bitte geben Sie den Buchstaben der Lösung ein. ’)<br />
if antwort == ’d’:<br />
print ’Richtig.’<br />
else:<br />
print ’Falsch.’<br />
...<br />
Nach jeder Frage wird der Benutzer auf die gleiche Art zu einer Eingabe<br />
aufgefordert und immer bekommt er ”<br />
Richtig.“ oder ”<br />
Falsch.“ als Antwort.<br />
Spätestens nach der dritten Frage tippt man das nicht noch einmal ein, sondern<br />
benutzt die Tastenkombinationen Strg + C zum Kopieren und<br />
Strg + V zum Einfügen. Dann muss man nur noch den richtigen Buchstaben<br />
anpassen.<br />
Aber auch das ist nicht die eleganteste Lösung. Am Besten bringt man dem<br />
Programm ein für alle Mal bei, was er in dem Abschnitt tun soll, den wir<br />
13
<strong>mit</strong> ”<br />
cut and paste“ sonst an viele Stellen ins Programm einfügen würden.<br />
Und das geht so:<br />
# -*- coding: cp1252 -*-<br />
# Variablen<br />
#<br />
# antwort - Zeichenkette (zum Speichern der Tastatureingabe)<br />
# lsg - Zeichenkette (um der Auswertung zu sagen, welche Antwort richtig ist)<br />
print ’Informatik-Quiz\n’<br />
def auswertung(lsg):<br />
antwort = raw_input(’Bitte geben Sie den Buchstaben der Lösung ein. ’)<br />
if antwort == lsg:<br />
print ’Richtig.’<br />
else:<br />
print ’Falsch.’<br />
print ’Wonach ist die Computersprache <strong>Python</strong> benannt?’<br />
print ’ a) nach einer Schlange’<br />
print ’ b) nach einer Komikergruppe’<br />
print ’ c) nach einer Sportart’<br />
print ’ d) nach einem Land’<br />
auswertung(’b’)<br />
print ’Welches ist die Amtssprache auf der Insel Java?’<br />
print ’ a) Chinesisch’<br />
print ’ b) Java’<br />
print ’ c) Javanisch’<br />
print ’ d) Indonesisch’<br />
auswertung(’d’)<br />
...<br />
Wir geben dem ausgelagerten Block zur Eingabe und Auswertung der Lösung<br />
einen Namen. In unserem Beispiel auswertung. Diesen Namen schreiben wir<br />
hinter den Befehl def, <strong>mit</strong> dem man sogenannte Funktionen definiert. In<br />
Pascal sagt man nicht Funktionen sondern Prozeduren. In Java und anderen<br />
vorwiegend objektorientierten Sprachen spricht man gerne von Methoden.<br />
In jedem Fall ist ein Block gemeint, dem man einen Namen gibt, so dass<br />
man immer wieder darauf zurückgreifen kann.<br />
Unsere Funktion ist gleich ein hochentwickeltes Exemplar seiner Gattung.<br />
Wir müssen ihr den Lösungsbuchstaben <strong>mit</strong>teilen, da<strong>mit</strong> sie richtig arbeiten<br />
14
kann. In der Funktion selbst steht dort, wo vorher der Lösungsbuchstabe<br />
stand, die Variable lsg. In ihr wird der gerade gültige Lösungsbuchstabe<br />
gespeichert.<br />
Ein großer Vorteil von Funktionen ist, dass man eine Änderung nur einmal<br />
vornehmen muss. Beispiele: Nach der Antwort Richtig.“ oder Falsch.“<br />
” ”<br />
soll noch eine Leerzeile eingefügt werden, da<strong>mit</strong> die einzelnen Fragen besser<br />
voneinander getrennt sind. Die Antwort Falsch.“ soll durch das höflichere<br />
”<br />
Leider falsch.“ ersetzt werden. Stell dir vor, dass Quiz hätte 50 Fragen und<br />
”<br />
du müsstest 50 Mal die Antwort ändern.<br />
Und weil Funktionen so wichtig sind noch einige Beispiel.<br />
# -*- coding: cp1252 -*-<br />
# Oberfl_Zylinder berechnet die Oberfläche eines Zylinders<br />
# aus dem Radius und der Höhe. Ergebnis: float<br />
def Oberfl_Zylinder(r,h):<br />
return 3.1415926 * r * r * h<br />
print ’Wäre eine Coladose 10cm hoch’,<br />
print ’und hätte sie einen Durchmesser von 8 cm,’<br />
print ’dann würden’, Oberfl_Zylinder(4,10), ’ml Cola hineinpassen.’<br />
15