Zum Hauptinhalt springen

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:

  1. Stellen Sie sicher, dass Sie 👉 Thonny installiert haben.
  2. Arbeiten Sie die Aufgaben im Teil 1 vollständig durch.
  3. Lesen Sie im Teil 2 den Theorie-Refresher durch – die blauen Kästen sind auch wichtig!
  4. Lösen Sie im Teil 2 so viele Aufgaben wie nötig, bis Sie sich in Bezug auf die gelesene Theorie sicher fühlen.
  5. Lesen Sie das 👉 Cheatsheet zum Thema «Funktionen» durch. Auch bei einem Text Adventure sollten Sie unbedingt mit Funktionen arbeiten.

Teil 1: Die Basics

Speichern

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.

Aufgabe 1

Zeichnen Sie mit der Turtle ein Quadrat mit Seitenlänge 100100.

Wenn Sie mit der Turtle arbeiten, dann muss Ihr Programm die folgenden Struktur haben:

from turtle import *

# Hier kommt Ihr Programm hin...

done()
Laden...
Aufgabe 2

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 100100 zu 5050 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.

Auf vorheriger Aufgabe aufbauen

Vielleicht hilft es Ihnen, wenn Sie Ihr Ergebnis aus der vorherigen Aufgabe als Grundlage verwenden.

Laden...
Aufgabe 3

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:

Laden...
⭐️ Aufgabe 4

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.

Kleine Änderung

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.

Laden...

Teil 2: Variablen, Datentypen, Eingabe und Ausgabe

Theorie-Refresher

Weitere Ressourcen

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.

Programmieren vs. Mathematik

In der Mathematik ist der Ausdruck a=32a = 32 die Feststellung einer Tatsache: aa und 3232 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: 32=a32 = a 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 und a ist damit vom Datentyp int.
  • a = 'Hallo' 👉 Die Anführungszeichen bedeuten, dass es sich hier um Text handelt. a ist somit vom Datentyp str.
  • a = 3.14 👉 3.14 ist eine Kommazahl und a somit vom Datentyp float.
Zahlen-Strings

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.

Print-Befehl in Thonny

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.

Wer arbeitet wo?

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.

input() immer mit Zuweisung

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.

Sinnvolle Eingabeaufforderungen

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.

Wann input(), wann print()?

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:

input() ergibt immer einen String

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 3232.

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)
Reihenfolge der Befehle

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
Subtraktion
-
z.B. 5 - 2
Multiplikation
*
z.B. 5 * 2
Division
/
z.B. 5 / 2

Weiter können folgende Operationen nützlich sein:

Ganzzahldivision
//
Wird auf die nächste Ganzzahl abgerundet.
z.B. 10 // 4 ergibt 2 (statt 2.5)
Modulo
%
Der Restwert einer Ganzzahldivision.
z.B. 10 % 3 ergibt 1.

Arbeitsblatt

Arbeitsblatt Teil 2
Speichern

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.

Laden...
Laden...