Python für den Unterricht an der KSBG

© fginfo.ksbg.ch, 2023 (work in progress), v0.2

Zum Einstieg in die faszinierende Welt von Python genügt eine kleine Teilmenge des grossen ökosystems von Python.
Diese soll hier als Ausgangspunkt für eigene Recherchen vorgestellt werden.

Siehe auch: docs.python.org

Die Code-Beispiele mit >>> sind in der interaktiven Python Shell ausgeführt worden.

Daten
Zur Lösung einer Aufgabe müssen in einem Algorithmus Daten verarbeitet werden. Diese werden als Variablen im Programm angelegt und bearbeitet. Variablen dienen der (Zwischen-)Speicherung von Eingaben, Ergebnissen, Messwerten und Konstanten (eine spezielle Form der Variable).
Einfache Datentypen
Name
type()
Beispiel Referenz
Ganzzahlen
<class 'int'>
42 w3schools.com
Gleitkommazahlen
<class 'float'>
4.2 w3schools.com
Zeichenketten
<class 'str'>
'Hallo du!'
"Hallo du!"
w3schools.com
Komplexe Datentypen
Listen
Eine Liste ist eine Datenstruktur, die in Python eingebaut ist und eine Sammlung von Elementen enthält.
Listen haben eine Reihe von wichtigen Eigenschaften:
  • Listenelemente sind in eckige Klammern eingeschlossen, wie hier [item1, item2, item3]
  • Listen sind geordnet, d. h., die Elemente in der Liste erscheinen in einer bestimmten Reihenfolge. Dies ermöglicht es uns, einen Index zu verwenden, um auf jedes Element zuzugreifen.
  • Listen sind veränderbar, d. h., Sie können nach der Erstellung einer Liste Elemente hinzufügen oder entfernen.
  • Listenelemente müssen nicht eindeutig sein.
    Die Duplizierung von Elementen ist möglich, da jedes Element seinen eigenen Platz hat und über den 0-basierten Index separat aufgerufen werden kann.
  • Die Elemente können unterschiedliche Datentypen haben: Sie können Strings, Integer und Objekte in derselben Liste kombinieren.
>>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
>>> fruits[3]
'banana'
>>> fruits.count('apple')
2
fruits.count('tangerine')
0
>>> fruits.index('banana')
3
>>> fruits.index('banana', 4)  # Find next banana starting at position 4
6
>>> fruits.reverse()
>>> fruits
['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange']
>>> fruits.append('grape')
>>> fruits
['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange', 'grape']
>>> fruits.sort()
>>> fruits
['apple', 'apple', 'banana', 'banana', 'grape', 'kiwi', 'orange', 'pear']
>>> fruits.pop()
'pear'
Siehe auch: www.python.org
Sets
Eine Set ist eine Datenstruktur, die in Python eingebaut ist und eine Sammlung von Elementen enthält.
Sets ähneln in vielen Punkten den Listen, die wesentlichsten Unterschiede sind:
  • Set-Elemente sind in geschweifte Klammern eingeschlossen, wie hier {item1, item2, item3}
  • Set-Elemente müssen eindeutig sein.
    Die Duplizierung von Elementen ist nicht möglich.
    Wird ein Element mehrfach hinzugefügt, so existiert es nur einmal im Set.
  • Zur Erstellung von Mengen können geschweifte Klammern oder die Funktion set() verwendet werden. Hinweis: Um eine leere Menge zu erstellen, muss set() verwenden, nicht {}; letzteres erzeugt ein leeres Wörterbuch (siehe unten)
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # zeigen, dass Duplikate entfernt wurden
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # schnelle Prüfung, ob ein Element in der Menge ist
True
>>> 'crabgrass' in basket
False

>>> # Demonstration von Mengenoperationen mit eindeutigen Buchstaben aus zwei Wörtern
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # alle Buchstaben finden
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # Buchstaben, die in a aber nicht in b vorkommen
{'r', 'd', 'b'}
>>> a | b                              # Buchstaben, die in a oder b oder beiden vorkommen
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # Buchstaben, die in sowohl a als auch b
{'a', 'c'}
>>> a ^ b                              # Buchstaben, die in a oder b aber nicht in beiden vorkommen
{'r', 'd', 'b', 'm', 'z', 'l'}
Siehe auch: www.python.org
Verzeichnis (Wörterbuch)

Ein weiterer nützlicher Datentyp, der in Python eingebaut ist, ist das Wörterbuch (englisch: Dictionary)

Ein Wörterbuch kann man sich als eine Menge von Schlüssel-Wert-Paaren vorzustellen, wobei die Schlüssel (innerhalb eines Wörterbuchs) eindeutig sein müssen.

  • Ein Paar geschweifte Klammern erzeugt ein leeres Wörterbuch: {}.
  • Eine kommagetrennte Liste von Schlüssel:Wert-Paaren innerhalb der geschweiften Klammern fügt dem Wörterbuch erste Schlüssel:Wert-Paare hinzu: tel = {'Paul': 4098, 'Fränze': 4139}
  • Die wichtigsten Operationen mit einem Wörterbuch sind das Speichern eines Wertes mit einem Schlüssel und das Extrahieren des Wertes mit dem Schlüssel. tel['Guido'] = 5544
  • Es ist auch möglich, ein Schlüssel:Wert-Paar mit del zu löschen.
  • Wenn einem Schlüssel gespeichert wird, der bereits in Gebrauch ist, wird der alte Wert, der mit diesem Schlüssel verbunden ist, überschrieben.
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127}
>>> list(tel)
['jack', 'guido', 'irv']
>>> sorted(tel)
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False
Siehe auch: www.python.org
Funktionen

Funktionen

Eine wichtige Funktion zur Kommunikation mit unserem Python Programm ist die eingebaute Funktion print('...'). Diese erzeugt entsprechend der übergebenen Argumente eine Ausgabe auf der Konsole.

Die zweite wichtige Funktion zur Kommunikation ist input('...'). Sie liest Eingaben aus der Konsole.

Ein Beispiel zum Ausprobieren:


Name = input('Wie lautet dein Name? ')
print(f'Hallo {Name}!\nSchön, dass du mit Python spielst.')        
            

Python Funktionen
Einige Basisfunktionen sind in der Standardinstallation von Python enthalten. Einige wenige, für den Unterricht wichtige, sollen hier gezeigt werden:

print()

Ausgabe von Texten auf die Konsole. Das kann gut für Informationen zum Programmablauf verwendet werden. (Selbst geschriebene) Tools geben ihre Resultate auch oft in die Konsole aus.

Siehe auch: www.w3schools.com

input()

Ermöglicht die Eingabe von Werten mit der Tastatur in der Konsole.
Hinweis: Man muss in

code
in die Konsolte, dort Terminal genannt, klicken damit man Text eingeben kann.

Siehe auch: www.w3schools.com

range()

Erzeugen von Bereichen für Schleifenkonstruktionen. Siehe unten.

Siehe auch: www.w3schools.com

Die eingebauten Funktionen von Python: Built-in-Functions
Eigene Funktionen

Eigene Funktionen

Funktionen werden durch das Schlüsselwort 'def', den Funktionsnamen, '('')' und einen ':' eingeleitet. Alle eingerückten Zeilen gehören zu dieser Funktionsdefinition:

def Sage3MalHallo():
    print('Hallo World!')
    print('Hallo Paula!')
    print('Hallo Paul!')
                
Funktionen können Argumente und einen Rückgabewert (return Wert) haben:

def BildeDieSumme(Wert1, Wert2):
    return Wert1 + Wert2
            
Sollen Funktionen Variablen aus dem Hauptprogramm ändern, so müssen diese am Anfang der Funktion mit 'global' bekannt gegeben werden. Ohne dieses 'global' werden die Variablen nur lokal in der Funktion verwendet:

Zaehler = 0

def ErhoeheDenZaehler(Wert):
    global Zaehler
    Zaehler = Zaehler + Wert

ErhoeheDenZaehler(15)
print(f'Zähler: {Zaehler}')   # Zähler: 15
            
Bibliotheken und einige Funktionen
Viel Programmierarbeit ist bereits von der Community geleistet worden. Diese stellt und vieles davon als einfach verwendbare Bibliotheken zur Verfügung. Wir können sie mit
import BIBLIOTHEK as b
in unserem Programm einbinden, mit dem Alias 'b' versehen und nutzen:
Wert = b.GIBMIREINENWERT()
Random
import random
Random wir zur Erzeugung (fast) zufälliger Zahlen verwendet.
Rückgabewert Funktion Kommentar Referenz
int
randint(a:int, b:int)
x ε G mit x ε [a, b) docs.python.org
float
random()
x ε R mit ε [0, 1) docs.python.org
int
randrange(start:int, stop:int, step:int)
x ε G mit ε [0, 1) docs.python.org
Math
Rückgabewert Funktion Kommentar Referenz
math.pi
Die mathematische Konstante π = 3.141592…
math.e
Die mathematische Konstante e = 2.718281…

Siehe auch: docs.python.org - math

Turtle

Die Turtle-Grafik stellt eine "physische Schildkröte" (ein kleiner Roboter mit einem Stift) dar, die auf einem Blatt Papier (einem Canvas in Computersprache) zeichnet. Dabei werden die Bewegungen von der Turtle aus gedacht, also eine Drehung wird zur aktuellen Richtung addiert und eine Bewegung geht von der aktuellen Position der Turtle aus.

Die aktuell Standardinstallation verwendet statt eines Tutle-Icons einen Pfeil, damit auch Lernende am Gymnasium sich nicht genieren die Bibliothek zu benutzen ;).

Ein Beispiel zum Ausprobieren:

from turtle import Turtle, Screen
from random import randrange

Leinwand = Screen()
Leinwand.setup(600, 400)
print(Leinwand.screensize())
Fritz = Turtle()
for i in range(42):
    steps = randrange(10,100)
    angle = randrange(0,270)
    Fritz.right(angle)
    Fritz.fd(steps)
Leinwand.exitonclick()
Leinwand.exitonclick() verhindert, dass das Zeichenfenster beim Beenden des Programms sofort geschlossen wird. Man kann es mit einem Klick in die Zeichenfläche schliessen.

Basisobjekte
Rückgabewert Funktion Kommentar Referenz
ein Screen Objekt
Screen()
erzeugen einer Leinwand docs.python.org
ein Turtle Objekt
Turtle()
erzeugen einer Turtle docs.python.org
Bewegungen
Rückgabewert Funktion Kommentar Referenz
forward(Distanz) | fd(Distanz)
Bewegt die Turtle um die Distanz. docs.python.org
right(Winkel) | rt()
docs.python.org
left(Winkel) | lt()
Dreht die Turtle um den Winkel nach rechts. docs.python.org
setpos(x, y=None)
Setzt die Turtle aud die Koordinate. y kann weggelassen werden. docs.python.org
setheading() | seth()
Setz die Richtung der Turtle auf den absoluten Winkel. 0° zeigt nach oben. docs.python.org
circle(Radius, Bogen in °)
Die Turtle zeichnet eine Kreis oder den Teil eines Kreises docs.python.org
dot(Grösse)
Zeichnet einen Punkt der angegebenen Grösse docs.python.org
Hilfsfunktionen
Rückgabewert Funktion Kommentar Referenz
showturtle()
Macht die Turtle sichtbar. docs.python.org
hideturtle()
Vetsteckt die Turtle. Damit wird die Grafik mit maximaler Geschwindigkeit erzeugt. docs.python.org
speed(v)
Setzt die Bewegungsgeschwindigkeit der Turtle. v ε [1,10] docs.python.org
Point ¦ Tuple x, y
position()
Gibt die Position der Turtle als Punkt (p = turtle.pos()) oder Tupel (x,y = turtle.pos()) zurück. docs.python.org
float
towards(x, y=None)
Gibt den Winkel zwischen der Turtlerichtung und Position zum angegebenen Punkt an. docs.python.org
float
distance(x, y=None)
Gitb den Abstand der Turtle zum angegeben Punkt zurück. docs.python.org
float
heading()
Gibt die Richtung der Turtle zurück. docs.python.org
setheading(Winkel)
Setzt die absolute Richtung der Turtle. docs.python.org
Stiftsteuerung
Rückgabewert Funktion Kommentar Referenz
pendown()
Senkt den Stift ab, es wird gezeichnet docs.python.org
penup()
Hebt den Stift an, es wird nicht gezeichnet. docs.python.org
pensize()
Setzt die Stiftbreite docs.python.org
pencolor()
Setzt die Stiftfarbe docs.python.org
Ereignisbehandlung
Rückgabewert Funktion Kommentar Referenz
listen()
initialisiert den Event-Listener der Zeichenfläche (Screen) docs.python.org
onkey(HandlerName, EventName)
Registriert den Eventhandler ''HandlerName' für das Event ''EventName''.
Events sind die Basiszeichen der Tastatur: a-z, A-Z, 0-9 und benannte Sondertasten
wie zum Beispiel 'plus' für '+' oder 'Up' für die ⬆️ Taste oder Maus-Klicks.
docs.python.org
onclick(HandlerName)
Registriert ein Maus-Klick-Event docs.python.org
Eine Referenz aller Funktionen: Turtle Funktionen
Siehe auch: Turtle graphics
Sprache
Operatoren
Operator Bezeichnung Beispiel
+, -
positives, negatives Vorzeichen
-3
+, -
Addition, Subtraktion
10 - 3
Ergebnis: 7
*, /
Multiplikation, Division
27 % 7
6
//
Ganzzahldivision
27 // 7
Ergebnis: 3
%
Rest (Modulo)
27 % 7
Ergebnis: 6
**
Potenzoperation
10 ** 3
Ergebnis: 1000
+=, -=, *=, /=
Kombinierte Zuweisungsoperation
x = 4
x += 1
                                
Ergebnis: 5
~x
Bitweises Not
~3 - 4
Ergebnis: -8
or, and, not
Boolsches Oder, Boolsches Und, Boolsches Nicht
(a or b) and c
in
"Element von"
1 in [3, 2, 1]
<, <=, >, >=, !=, ==
Vergleichsoperatoren
2 <= 3
|, &, ^
Bitweises Oder, Bitweises Und, Bitweises XOR
6 ^ 3
<<, >>
Shiftoperatoren
 6 << 3 
Schlüsselworte
Schlüsselworte
import from as
None True False and or not
def : global pass return
class del is in with
Siehe auch: keywords
Steuerstrukturen
Steuerstrukturen
if elif else
while for continue break
x = int(input("Bitte eine Natürliche Zahl: "))

if x < 0:
    x = 0
    print('Negativ, zu 0 gemacht!')
elif x == 0:
    print('Null')
elif x == 1:
    print('Eins')
else:
    print('Mehr')
Siehe auch: if Statement
for Index in range(5):
    print(Index)
Wortliste = ['Die', 'Katze', 'sitzt', 'am', 'Fenster']
for Wort in Wortliste:
    print(Wort, end=' ')
Siehe auch: for Statement
x = -1
while x < 4:
    print(x)
    x += 1
Siehe auch: while Statement
while True:
    Entscheid = input('Eingabe "von vorne", "weiter", "Abbruch": ')
    if Entscheid=='von vorne':
        continue;
    if Entscheid=='Abbruch':
        break;
    print('es geht weiter....')
print('abgebrochen')
Siehe auch: break und continue Statement
Zeichenketten
Einzeilige Zeichenketten (englisch: string) werden in Python mit " oder ' umgeben.
print("Hallo Max")
print('Hallo Heidi')
                
Mehrzeilige Zeichenketten werden in """ eingeschlossen.
print("""Aller guten Dinge sind 3:
1. Versuche zu verstehen.
2. Versuche zu lieben.
3. Habe Geduld!""")
Für clevere Formatierung in Zeichenketten gibt es die f" Hallo {Name}!" Notation. Siehe auch: f-Strings
>>> PreisApfel = 3.45
>>> Menge = 'kg'
>>> print(f'Die Apfel kosten {PreisApfel:5.2f} Fr. pro {Menge}.')
Die Apfel kosten  3.45 Fr. pro kg.

Optionen zur Formatierung in f-Strings

:< Left aligns the result (within the available space)
:> Right aligns the result (within the available space)
:^ Center aligns the result (within the available space)
:= Places the sign to the left most position
:+ Use a plus sign to indicate if the result is positive or negative
:- Use a minus sign for negative values only
Use a space to insert an extra space before positive numbers (and a minus sign before negative numbers)
:, Use a comma as a thousand separator
:_ Use a underscore as a thousand separator
:b Binary format
:c Converts the value into the corresponding unicode character
:d Decimal format
:e Scientific format, with a lower case e
:E Scientific format, with an upper case E
:f Fix point number format
:F Fix point number format, in uppercase format (show inf and nan as INF and NAN)
:g General format
:G General format (using a upper case E for scientific notations)
:o Octal format
:x Hex format, lower case
:X Hex format, upper case
:n Number format
:% Percentage format