124
Wir erzeugen unsere eigenen Funktionen
Kapitel
4
>
Aufgabe:
Erweitere
miniquiz_arbeit.py
so, dass es folgende Aus-
gabe erzeugen kann:
Welche Programmiersprache lernst du gerade?
Python
Richtig!
Mit welchem reservierten Wort beginnt eine
Funktionsdefinition?
fun
Leider falsch!
Richtig ist: def
Wie viele reservierte Worte hat Python?
101
Leider falsch!
Richtig ist: 33
Du hast 1 von 3 Punkten erreicht!
Anleitung:
1)
Du musst den Code von Miniquiz kopieren und noch zwei Mal (für die
beiden anderen Fragen) darunter anfügen. Danach kannst du die Strings
frage
und
loesung
entsprechend der Vorlage ändern.
2) Du musst eine Variable für das Mitzählen der richtigen Antworten ein-
führen! Als Variablennamen schlage ich
punkte
vor. Weise ihr am Anfang
des Programms den Wert 0 zu!
3) In jedem der drei Code-Abschnitte für die Quizfragen muss im
if
-Zweig
der Wert von
punkte
um 1 erhöht werden:
punkte = punkte + 1
Das wär’s. Teste nun dein Programm!
Wie viele Punkte hast du erreicht? Steht nicht da? Dann hast du vergessen,
die Ausgabe der Punkte zu programmieren.
>
Sobald du das Programm erfolgreich getestet hast, speichere eine
Kopie unter dem Namen
miniquiz03.py
ab.
Wie immer sind auch die miniquiz-Programme auf der Buch-CD enthalten,
und zwar im Verzeichnis
py4kids-material\kap04\programme
.
125
Eine Funktion verwenden
Eine Funktion verwenden
Auch in diesem Programm tritt ein Code-Abschnitt mehrfach auf:
antwort = input(frage)
if antwort == loesung:
print("Richtig!")
punkte = punkte + 1
else:
print("Leider falsch!")
print("Richtig ist:", loesung)
print()
Die letzte
print
-Anweisung ist nicht Bestandteil der Verzweigung. Du und
der Interpreter erkennen das an ihrer Position: Weil sie nicht eingerückt ist,
gehört sie nicht mehr zum
else
-Zweig. Die durch dieses
print
erzeugte
Leerzeile wird auf jeden Fall ausgegeben.
Wir können diesen Abschnitt in einer Funktion
quizfrage()
zusammen-
fassen. Wir müssen aber überlegen, welche lokalen Variablennamen in die-
ser Funktion erzeugt werden. Das sind alle Namen, denen ein Objekt zuge-
wiesen wird:
antwort
und
punkte
. Für
antwort
ist das perfekt.
punkte
aber wird schon außerhalb der Funktion definiert. Der Wert von
antwort
wird nur innerhalb der Funktion verwendet. Um zu verhindern, dass bei der
Zuweisung
punkte = punkte + 1
– wie bei
dreieck08a.py
gehabt –
eine Fehlermeldung erzeugt wird, müssen wir für
punkte
eine
global
-
Anweisung einfügen.
def quizfrage():
global punkte
antwort = input(frage)
if antwort == loesung:
print("Richtig!")
punkte = punkte + 1
else:
print("Leider falsch!")
print("Richtig ist:", loesung)
print()
Damit können wir unser
miniquiz_arbeit.py
weiter umarbeiten und
gelangen zu einer kompakteren Lösung:
126
Wir erzeugen unsere eigenen Funktionen
Kapitel
4
# Autor: Gregor Lingl
# Datum: 6. 8. 2008
# miniquiz04.py : Python für Kids, Kapitel 4
# Quiz aus drei Fragen.
def quizfrage():
global punkte
antwort = input(frage)
if antwort == loesung:
print("Richtig!")
punkte = punkte + 1
else:
print("Leider falsch!")
print("Richtig ist:", loesung)
print()
punkte = 0
frage = "Welche Programmiersprache lernst du?"
loesung = "Python"
quizfrage()
frage = """Mit welchem reservierten Wort
beginnt eine Funktionsdefinition?"""
loesung = "def"
quizfrage()
frage = "Wie viele reservierte Worte hat Python?"
loesung = "33"
quizfrage()
print("Du hast", punkte, "von 3 möglichen Punkten
erreicht!") .
>
Führe die nötigen Änderungen in
miniquiz_arbeit.py
aus. Wenn
du es erfolgreich getestet hast, speichere eine Kopie des Programms
als
miniquiz04.py
ab.

Get Python für Kids now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.