Python Refresher
Mit diesem Refresher bringen Sie Ihr Python-Wissen wieder auf Vordermann. Die 👉 Python Cheatsheets werden Ihnen dabei behilflich sein.
Gehen Sie wie folgt vor:
- Stellen Sie sicher, dass Sie 👉 Thonny installiert haben.
- Arbeiten Sie die Aufgaben im Teil 1 vollständig durch.
- Lesen Sie im Teil 2 den Theorie-Refresher durch – die blauen Kästen sind auch wichtig!
- Lösen Sie im Teil 2 so viele Aufgaben wie nötig, bis Sie sich in Bezug auf die gelesene Theorie sicher fühlen.
- Lesen Sie das 👉 Cheatsheet zum Thema «Funktionen» durch. Auch bei einem Text Adventure sollten Sie unbedingt mit Funktionen arbeiten.
Teil 1: Die Basics
Erstellen Sie in Thonny für jede Aufgabe eine neue Datei. Speichern Sie diese gleich an einem sinnvollen Ort auf Ihrer OneDrive ab. Sie sollten jederzeit wieder auf Ihre Lösungen zugreifen können.
Zeichnen Sie mit der Turtle ein Quadrat mit Seitenlänge .
Wenn Sie mit der Turtle arbeiten, dann muss Ihr Programm die folgenden Struktur haben:
from turtle import *
# Hier kommt Ihr Programm hin...
done()
Gegeben ist folgender Anfang eines Turtle-Programms, welches bisher noch nichts zeichnet:
from turtle import *
shape('turtle')
seite = 100
n = 5
Kopieren Sie diesen Code in eine neue Datei in Thonny und erweitern Sie ihn so, dass ein beliebiges n
-Eck mit Seitenlänge seite
gezeichnet wird.
Das heisst: Wenn man die Seitenlänge von zu verändern will, soll man nur seite = 50
setzen müssen. Wenn man statt einem Fünfeck ein Neuneck zeichnen will, soll man nur n = 9
setzen müssen.
Vielleicht hilft es Ihnen, wenn Sie Ihr Ergebnis aus der vorherigen Aufgabe als Grundlage verwenden.
Kopieren Sie Ihr Programm aus Aufgabe 2 und passen Sie es so an, dass seite
nicht mehr fix auf einen bestimmten Wert festgelegt wird. Stattdessen sollen folgende Regeln gelten:
- Wenn ein n-Eck mit genau 3 Seiten (also ein Dreieck) gezeichnet wird, dann soll eine Seitenlänge von
200
verwendet werden. - Bei mindestens 4 und höchstens 7 Ecken soll eine Seitenlänge von
100
verwendet werden. - Andernfalls soll eine Seitenlänge von
50
verwendet werden.
Für diese Aufgabe sollten Sie sich folgende Cheatsheets anschauen:
Um diese Aufgabe lösen zu können, sollten Sie etwas vorgreifen und sich im 👉 Theorie-Refresher bereits jetzt zu den Themen Eingabe / Ausgabe und Datentypen schlau machen.
Passen Sie Ihre Lösung zur Aufgabe 3 nun noch so an, dass die Anzahl Seiten nicht mehr fix im Code definiert ist. Stattdessen soll Ihr Program den Benutzer / die Benutzerin fragen, wie viele Ecken das n-Eck haben soll.
Sie sollten eigentlich nur eine einzige Zeile anpassen müssen.
Denken Sie dran: Sobald Sie Ihr Programm ausführen, werden Sie vom Programmierer zum Benutzer. Und dem Benutzer steht der Programmcode nicht zur Verfügung.
Teil 2: Variablen, Datentypen, Eingabe und Ausgabe
Theorie-Refresher
In diesem Refresher werden einige zentrale Python-Konzepte kompakt zusammengefasst. Wenn Sie eine detailliertere Erklärung suchen oder wenn Sie ein Thema vermissen, dann schauen Sie in die 👉 Python Cheatsheets.
Eine Variable ist wie eine «Box», in der wir einen Wert abspeichern können. Beispielsweise weisen wir mit a = 32
der Variable a den Wert 32
zu. Überall wo wir anschliessend a
verwenden, wird mit dem Wert 32
gearbeitet.
In der Mathematik ist der Ausdruck die Feststellung einer Tatsache: und sind dasselbe.
Beim Programmieren ist a = 32
hingegen ein Befehl: Wir befehlen dem Computer den Wert der Variable a
auf 32
zu setzen. Wir definieren also a
und weisen ihr den Wert 32
zu (Definition und Zuweisung).
Demnach spielt die Reihenfolge eine Rolle: macht in der Mathematik Sinn. Beim Programmieren würden wir 32 = a
aber verstehen als «definiere die Variable 32 und weise ihr den Wert a
zu». Das ist unnsinnig, denn a
soll die Variable sein, und 32
ihr Wert.
Richtig ist also nur die Reihenfolge a = 32
.
Jede Variable hat einen bestimmten Datentyp. Wichtige Datentypen sind:
int
- Ganzzahl (z.B.
0
,1
,-1
), auch Integer genannt. float
- Kommazahl (z.B.
3.14
). str
- Text (z.B.
"Hallo"
), auch String genannt.
Der Datentyp einer Variable wird automatisch festgelegt, sobald wir ihr einen Wert zuweisen. Zum Beispiel:
a = 32
👉32
ist eine Ganzzahl unda
ist damit vom Datentypint
.a = 'Hallo'
👉 Die Anführungszeichen bedeuten, dass es sich hier um Text handelt.a
ist somit vom Datentypstr
.a = 3.14
👉3.14
ist eine Kommazahl unda
somit vom Datentypfloat
.
Welchen Datentyp hat a
bei der Zuweisung a = '32'
?
32
ist eine Ganzzahl. Entscheidend sind aber die Anführungszeichen: Sie bedeuten immer, dass es sich um Text handelt. Das gilt auch dann, wenn der Text nur aus Zahlen besteht. a
ist also vom Typ str
.
Das ist wichtig, denn Zahlen verhalten sich anders als Text. Führen Sie die beiden untenstehenden Beispiele aus (auf den Play-Button klicken) und beobachten Sie die Ausgabe. Verstehen Sie, was hier vor sich geht?
Beispiel 1:
a = 10
b = 15
x = a + b
print(x)
Beispiel 2:
a = "10"
b = "15"
x = a + b
print(x)
Eine besondere Variable ist die sogenannte Schleifenvariable bei der for
-Schleife:
for i in range(10):
print(i)
Beim ersten Durchlauf der Schleife hat i
den Wert 0
, beim zweiten Durchlauf den Wert 1
, und so weiter. Bei letzten der 10 Durchläufe hat sie somit den Wert 9
. Die Variable muss übrigens nicht unbedingt i
heissen.
Im obigen Beispiel haben Sie den print()
-Befehl gesehen. Wir benutzen ihn, um etwas in der Kommandozeile auszugeben (eben z.B. das Resultat der Rechnung). Der print()
Befehl gibt das aus, was in den Klammern steht.
Kopieren Sie das folgende Beispiel und fügen Sie es in Thonny in einer neuen Datei ein. Führen Sie das Programm anschliessend aus.
Sobald Sie das gemacht haben, müssten Sie den Text «Hallo vom print-Befehl.» zweimal sehen: Einmal im Code-Editor (das ist der Teil von Thonny, wo Sie den Code eingefügt haben) und einmal in der Kommandozeile (die sollte unterhalb des Code-Editors erscheinen).
print('Hallo vom print-Befehl.')
Wenn Sie das verifiziert haben, können Sie die Aufgabe als erledigt markieren. In Thonny müssen Sie nichts speichern.
Beim Programmieren wechseln wir ständig zwischen zwei Rollen hin und her:
- Programmierer:in
- Wir schreiben, entwickeln und bearbeiten den Programm-Code. Als Programmierer:in arbeiten wir im Code-Editor – also im oberen Bereich von Thonny.
- Benutzer:in
- Wir führen unser Programm aus, um es zu testen oder zu verwenden. Der Code-Editor interessiert uns in dieser Rolle nicht. Als Benutzer:in arbeiten wir nur in der Kommandozeile, die in Thonny i.d.R. unten positioniert ist.
Beim print()
-Befehl ist der Datentyp oft wichtig. Beispielsweise lässt sich folgendes Beispiel nicht fehlerfrei ausführen:
print("Hallo " + 32)
In der Fehlermeldung heisst es – etwas kryptisch – TypeError: unsupported operand type(s) for +: 'str' and 'int'
. Soll heissen: Addition (+
) kann Python nicht zwischen einem str
und einem int
durchführen. Wie würde man auch einen Text und eine Zahl addieren?
Damit das funktioniert, brauchen wir den str()
-Befehl: str(32)
macht aus 32
einen str
. So klappt es nun:
print("Hallo " + str(32))
Das «Gegenstück» zum print()
-Befehl ist der input()
-Befehl. Wir benutzen ihn, m eine Benutzereingabe zu erfragen.
Im folgenden Beispiel erscheint in der Kommandozeile (wie bei print()
) der Text Eingabe:
. Anschliessend hält das Programm an und wartet – und zwar so lange, bis die Benutzerin etwas eigegeben und Enter gedrückt hat.
a = input('Eingabe: ')
Der eigegebene Wert wird nun in der Variable a
gespeichert.
Der input()
-Befehl ist sinnlos ohne eine Zuweisung. Im obigen Beispiel wird der eigegebene Wert in der Variable a
gespeichert, damit wir diesen weiterverwenden können. Ohne diese Zuweisung geht der Wert direkt wieder verloren und wir können nicht mehr darauf zugreifen.
Denken Sie dran: Sobald wir in der Kommandozeile unterwegs sind, sind wir nicht mehr Programmierer:in, sondern Benutzer:in. Der Code interessiert uns in dem Moment nicht.
Gehen Sie beim Programmieren immer davon aus, dass die Benutzer:innen Ihres Programms den Code entweder nicht verstehen (weil sie noch nie programmiert haben), oder ihn vielleicht gar nicht erst sehen.
Das bedeutet: Es sollte rein aus der Kommandozeile klar sein, wie man Ihr Programm benutzen muss. Der Text innerhalb der Klammern des input(...)
-Befehls ist dabei besonders wichtig. Als Benutzer:in muss ich wissen, (1) dass von mir eine Eingabe erwartet wird und (2), was ich eingeben muss.
Wählen Sie für Ihre input(...)
-Befehle also immer einen sinnvollen Text.
Den input()
-Befehl brauchen Sie immer dann, wenn Sie von der Benutzerin eine Antwort erwarten. Der Befehl führt dazu, dass das Programm angehalten wird. Es läuft erst weiter, wenn man etwas eigegeben und Enter gedrückt hat.
Den print()
-Befehl brauchen Sie dann, wenn Sie keine Antwort erwarten – wenn Sie zum Beispiel die Benutzerin über etwas informieren wollen. Das Programm hält nicht an, man kannn nichts eingeben und es gibt auch nichts, was man einer Variable zuweisen könnte.
Im Zusammenhang mit dem input()
-Befehl sind die beiden Befehle int()
und float()
oft wichtig, denn:
Der Befehl input()
erzeugt immer, immer, immer einen String!
Auch wenn wir etwas haben wie a = input('Bitte geben Sie eine Ganzzahl ein: ')
wird a
vom Typ str
sein.
Schliesslich sieht der input()
-Befehl einfach nur eine Tastatureingabe. Wenn wir also z.B. 32
eintippen, dann sieht er das ASCII-Zeichen 3
, gefolgt vom ASCII-Zeichen 2
, und nicht die Ganzzahl .
Warum das wichtig ist, zeigt folgendes Taschenrechner-Programm:
a = input('Erste Zahl eingeben: ')
b = input('Zweite Zahl eingeben: ')
c = a + b
print(c)
Das Problem ist, dass wir hier zwei Strings addieren. Eigentlich wollen wir aber Zahlen addieren. Wir brauchen dazu den Befehl int()
, der aus einem String einen int
macht:
a = int(input('Erste Zahl eingeben: '))
b = int(input('Zweite Zahl eingeben: '))
c = a + b
print(c)
Wie im Math werden auch hier die Klammern von innen nach aussen aufgelöst.
Im obigen Beispiel wird auf Zeile 1 also zuerst der input()
-Befehl ausgeführt, der einen str
produziert. Diesen str
wird im nächsten Schritt vom int()
-Befehl aufgegriffen, welcher ihn zu einem int
verwandelt.
Der float()
-Befehl funktioniert analog zum int()
-Befehl. Wir verwenden ihn immer dann, wenn wir vom Benutzer die Eingabe einer Kommazahl erwarten.
Sobald wir mit Zahlen arbeiten, stehen uns diese wichtigen arithmetischen Operationen zur Verfügung:
- Addition
+
- z.B.
5 + 2
- z.B.
- Subtraktion
-
- z.B.
5 - 2
- z.B.
- Multiplikation
*
- z.B.
5 * 2
- z.B.
- Division
/
- z.B.
5 / 2
- z.B.
Weiter können folgende Operationen nützlich sein:
- Ganzzahldivision
//
- Wird auf die nächste Ganzzahl abgerundet.
- z.B.
10 // 4
ergibt2
(statt2.5
)- Wird auf die nächste Ganzzahl abgerundet.
- Modulo
%
- Der Restwert einer Ganzzahldivision.
- z.B.
10 % 3
ergibt1
.- Der Restwert einer Ganzzahldivision.
Arbeitsblatt
Erstellen Sie in Thonny für jede Aufgabe eine neue Datei. Speichern Sie diese gleich an einem sinnvollen Ort auf Ihrer OneDrive ab. Sie sollten jederzeit wieder auf Ihre Lösungen zugreifen können.