Zum Auffrischen verschaffen wir uns einen Überblick über die Programmierstrukturen und die verfügbaren Einfachen Datentypen von Python.
Aufgabe «Auffrischen»
Arbeit dich selbständig durch dieses Kapitel. Teste dabei die Beispiele mit Thonny aus. Verwende dazu das Fenster Variables und den Debugger (siehe Kapitel Thonny, Debugger)
# Boolean
ein Wahrheitswert: entweder True oder False.
zeit = 12
mittag = zeit == 12
print(mittag)
2
3
- Zeile 2
- wir definieren eine Variable mit dem Namen
mittag - Rechts vom Zuweisungsoperator
=steht ein Ausdruck - der Ausdruck vergleicht den Inhalt der Variablen
zeitmit der Zahl12 - dieser Ausdruck wird ausgewertet und ergibt
TrueoderFalse, also einen Boolean
# Verzweigungen und Schleifen
Werte vom Typ Boolean werden in Verzweigungen und Schleifen verwendet. Bei einem «Wenn-Dann» oder einem «Solange dass» entscheidet ein Boolean über Ausführen oder Nicht-Ausführen eines Code-Abschnitts:
# Verzweigung – if-elif-else
zeit = 12
if zeit == 12:
print("Es ist Mittag")
print("gehen wir essen!")
elif zeit > 12:
print("Es ist Nachmittag")
else:
print("Es ist Vormittag")
2
3
4
5
6
7
8
Aufgabe «if»
- Übernimm das Beispiel und führe es aus. Was ist der Output?
- Passe den Wert von
zeitin der ersten Zeile an. Was gibt das Programm nun aus? - Kannst du den Wert bewusst anpassen, so dass Zeile 6 oder Zeile 8 ausgeführt wird?
Die Reihenfolge ist immer if, dann kein oder mehrere elif und am Schluss ein optionales else.
# Schleifen – while
zeit = 8
while zeit < 12:
print("Es geht noch", 12-zeit, "Stunden")
zeit = zeit + 1
print("Jetzt ist es Mittag")
2
3
4
5
- Zeile 2
- Der Ausdruck im obigen Beispiel ist zuerst True, weil ja 8 kleiner als 12 ist. Also wird der Schleifeninhalt ausgeführt.
- Zeile 4
- In der Schleife drin wird die Variable
zeitum 1 vergrössert. Somit wird diese Schleife 4 Mal ausgeführt. Nach 4 Durchläufen hatzeitden Wert12und somit ist der Ausdruckzeit < 12nicht mehrTrue, sondernFalse. - Zeile 5
- das Programm wird unterhalb der Schleife weitergeführt.
Aufgabe «while»
- Überlege dir was das Programm macht.
- Übernimm das Beispiel und führe es aus. Vergleiche den Output mit deinen Überlegungen
- füge vor Zeile 3 eine weitere Zeile ein, die die aktuelle Uhrzeit ausgibt, also z.B. «Es ist jetzt 8 Uhr»
# Integer (ganze Zahlen)
Beliebig grosse – auch negative – ganze Zahlen.
from math import sqrt
a = 3
b = 4
c_quadrat = a**2 + b**2
print(c_quadrat) # ergibt noch einen int
c = sqrt(c_quadrat)
print(c) # durch die Wurzel-Funktion float
2
3
4
5
6
7
8
9
10
Aufgabe «Fibonacci-Folge»
Gib alle Zahlen der Fibonacci-Folge die kleiner als 100’000 aus.
Fibonacci-Folge
Die Fibonacci-Folge ist eine rekursive Zahlenfolge. Man beginnt mit
Mathematische Definition:
Lösung «Fibonacci»
a = 0
b = 1
while True:
c = a + b
if c > 100000:
break
print(c)
a = b
b = c
2
3
4
5
6
7
8
9
10
# Unterprogramme
Code kann zur Wiederverwendung und auch zur Übersichtlichkeit in Unterprogramme unterteilt werden. Unterprogramme können mitgegebene Argumente entgegennehmen und eine Rückgabewert liefern.
from math import sqrt
def pythagoras(a, b):
c_quadrat = a**2 + b**2
c = sqrt(c_quadrat)
return c
print(pythagoras(3,4))
print(pythagoras(12.3,6.5))
2
3
4
5
6
7
8
9
- Zeile 3
- Wir definieren ein Unterprogramm mit dem Namen
pythagoras - Unser Unterprogramm nimmt 2 Argumente entgegen
- im Unterprogramm sind diese Argumente unter den Namen
aundbverfügbar - Zeilen 4 & 5
- Wir berechnen ein Ergebnis
- Zeile 6
- der berechnete Wert wird mit
returnan den Aufrufenden zurückgegeben - Zeile 8 und 9
- wir rufen unser Unterprogramm mit verschiedenen Werten auf und geben das Ergebnis jeweils mit
printdirekt aus
Aufgabe «Unterprogramme»
- Überlege dir was das Programm macht.
- Passe die Werte im Aufruf an und überprüfe den Output.
# Floats (Dezimalbrüche)
Kommazahlen mit einer bestimmten Genauigkeit. Bei der Berechnung können Rundungsfehler entstehen!
from random import random
summe = 0
i = 0
while i < 100:
summe = summe + random()
i = i + 1
print("Summe von 100 Zufallszahlen zwischen 0 und 1:", summe)
2
3
4
5
6
7
8
9
Aufgabe «Unterprogramme»
- Überlege dir was das Programm macht und was am Schluss rauskommen sollte
- Übernimm das Programm und starte es einige Male. Stimmen dein Überlegungen?
- Vergrössere die Anzahl der Zufallszahlen auf 1000
- Wie könnte man eine Genauigkeit angeben, unabhängig von der Anzahl Zufallszahlen?
Zusatzaufgabe «𝛑 mit Monte-Carlo»
Versuche eine möglichst genaue Näherung für 𝛑 mit der unten beschriebenen Monte-Carlo-Methode zu bestimmen.
Als Erweiterung kannst du den Versuch auch grafisch darstellen.
Tipp «𝛑 mit Monte-Carlo»
Die Formel zur Berechnung der Fläche eines Kreises, beinhaltet 𝛑. Wir verteilen Punkte zufällig auf eine Fläche, die zum Teil von einem Kreis bedeckt ist. Nun stehen die Anzahl «Treffer» auf den Kreis im Verhältnis zu der Fläche des Kreises. So können wir 𝛑 statistisch bestimmen.
Zur Einfachheit schauen wir einen Viertelkreis mit Radius 1 an und verteilen die Punkte zufällig im umgebenden Quadrat:

Fläche des Quadrates:
Fläche des Viertelkreises:
Die Wahrscheinlichkeiten, dass ein zufällig gewählter Punkt innerhalb des Viertelkreises liegt (
Wenn wir dann noch nach
Lösung «Pi mit Monte-Carlo»
from random import random
versuche = 0
treffer = 0
while versuche < 1000000:
x = random()
y = random()
if x*x + y*y < 1:
treffer = treffer + 1
versuche = versuche + 1
pi = 4 * treffer/versuche
print(pi)
2
3
4
5
6
7
8
9
10
11
12
13
14
# Strings (Text)
Texte bestehend aus Buchstaben, Ziffern, Sonder- und Steuerzeichen.
name = input("Sag mir bitte deinen Namen: ")
print("ich schreie:", name.upper())
print("ich flüstere:", name.lower())
print("ich sage:", name.capitalize())
print("dein Name hat", len(name), "Buchstaben")
if name.lower().find("e") >= 0:
print("dein Name beinhaltet", name.lower().count("e"), "mal den Buchstaben 'e'")
else:
print("dein Name hat kein 'e'")
2
3
4
5
6
7
8
9
- Zeile 1
- mit dem Befehle
inputkann eine Benutzer-Eingabe in der Shell erzeugt werden - Zeilen 2-4
- Strings können in Gross- und Kleinbuchstaben umgewandelt werden
- ab Zeile 6
- man kann nach Buchstaben oder Teilstrings suchen und die Anzahl Treffer zählen
Aufgabe «Smalltalk»
Erstelle einen kleines Konversations-Programm:
- Stelle eine Frage
- mache etwas mit der Antwort
- benütze die Antwort für weitere Fragen
- …
# Listen
Eine Liste ist ein sogenannter «zusammengesetzter» Datentyp. Sie besteht nämlich aus mehreren einfachen oder zusammengesetzten Datentypen. Es gibt Listen von Zahlen, von Strings. Es sind auch gemischte Listen und Listen von Listen möglich.
liste = [True, "Hallo Welt", "Hello World", 12, 3.1]
for item in liste:
print(item)
2
3
4
# Liste definieren
Python erkennt Listen an Hand der eckigen Klammern. Vorgegebene Werte werden duch Kommas getrennt. Die Liste kann aber auch leer sein.
wochentage = ["Mo", "Di", "Mi"] # Liste mit 3 Elementen
monate = ["Januar"] # Liste mit einem Elemente
jahre = [] # leere Liste
2
3
# Länge der Liste
Mit len(list) erhält man die Anzahl Elemente der Liste list.
# for-in-Schleife
Mit der for-in-Schleife können wir alle Elemente einer List durchlaufen.
monate = ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul"]
for monat in monate:
print(monat)
2
3
- Zeile 2
- «Für jeden Monat in der Liste Monate»
monatist der Name, mit welchem wir das Element in der Schleife ansprechen können- Zeile 3
- wird für jedes Element ausgeführt, wobei der Wert von
monatnatürlich immer ändert
Aufgabe «Notendurchschnitt»
Berechne den Notendurchschnitt mit der gegebenen Vorlage:
noten = [4.5, 5.5, 6, 4.75]
«Notendurchschnitt»
noten = [4.5, 5.5, 6, 4.75]
summe = 0
for note in noten:
summe = summe + note
durchschnitt = summe/len(noten)
2
3
4
5
6
Zusatzaufgabe «Durchschnitt allgemein»
Schreibe ein Unterprogramm durchschnitt(), das als Argument eine Liste erhält, den Durchschnitt dieser berechnet und das Ergebnis zurückliefert.
Durchschnitt allgemein
def durchschnitt(liste):
summe = 0
for element in liste:
summe = summe + element
return(summe/len(noten))
noten = [4.5, 5.5, 6, 4.75]
print("Zeugnis:", durchschnitt(noten))
print("Würfel:", durchschnitt([1,5,2,6]))
2
3
4
5
6
7
8
9
10
Springob via Wikimedia (opens new window) ↩︎