2. Unterrichtsblock
Python Variablen
Eine Variable ist ein Name, unter dem ein Wert gespeichert wird. In Python wird eine Variable nicht vorher deklariert. Sie entsteht bei der ersten Zuweisung.
Variablen erstellen
Python benoetigt keine separate Deklaration. Der Wert bestimmt den aktuellen Datentyp. Eine Variable kann später auch einen Wert eines anderen Typs erhalten.
name = "Samira"
alter = 17
print(name)
print(alter)
wert = 4
print(wert)
print(type(wert))
wert = "Servus"
print(wert)
print(type(wert))
Der Name der Variable bleibt gleich, aber der gespeicherte Wert und sein Datentyp ändern sich.
Einfache oder doppelte Anführungszeichen
Strings können mit einfachen oder doppelten Anführungszeichen geschrieben werden. Beide Schreibweisen erzeugen einen String.
obst_a = "Zwetschge"
obst_b = 'Zwetschge'
print(obst_a == obst_b)
Groß- und Kleinschreibung
Bei Variablennamen unterscheidet Python Groß- und Kleinschreibung. a und A sind zwei verschiedene Namen.
a = 4
A = "Servus"
print(a)
print(A)
Variablennamen
Ein Variablenname darf mit einem Buchstaben oder Unterstrich beginnen und darf Buchstaben, Zahlen und Unterstriche enthalten. Leerzeichen, Bindestriche und Python-Schlüsselwörter sind nicht erlaubt.
| Regel | Gültiges Beispiel | Ungültiges Beispiel |
|---|---|---|
| beginnt mit Buchstabe oder Unterstrich | name, _name | 2name |
| enthält Buchstaben, Zahlen und Unterstriche | raum_2 | raum-2 |
| keine Leerzeichen | maximale_punkte | maximale punkte |
| kein Python-Schlüsselwort | if_status | if |
| Groß-/Kleinschreibung bleibt relevant | alter, Alter | – |
Sprechende Namen machen Programme leichter lesbar. In Python ist snake_case die uebliche Schreibweise für Variablen.
| Schreibweise | Beispiel | Typische Verwendung |
|---|---|---|
| snake_case | maximale_punkte | Variablen und Funktionen in Python |
| camelCase | maximalePunkte | möglich, aber weniger ueblich in Python |
| PascalCase | MaximalePunkte | vor allem für Klassen |
Mehrere Werte zuweisen
Mehrere Variablen können in einer Zeile mit unterschiedlichen Werten angelegt werden:
fach, raum, stunden = "Python", "B204", 4
print(fach)
print(raum)
print(stunden)
Mehrere Variablen können auch denselben Wert erhalten:
x = y = z = 0
print(x, y, z)
Beim Unpacking werden Werte aus einer Sammlung auf mehrere Variablen verteilt. Die Anzahl muss passen, sonst entsteht ein ValueError.
obst = ["Apfel", "Birne", "Mango"]
erstes, zweites, drittes = obst
print(erstes)
print(zweites)
print(drittes)
Variablen ausgeben
Mit Kommas können unterschiedliche Datentypen gemeinsam ausgegeben werden:
punkte = 82
text = "Punkte"
print(punkte, text)
Der Operator + addiert Zahlen oder verbindet Strings. Eine Zahl und ein String können nicht unpassend mit + verbunden werden.
punkte = 82
print(punkte + 3)
name = "Samira"
print("Hallo " + name)
# Dieser Ausdruck erzeugt einen TypeError:
# print("Punkte: " + punkte)
Zwischenaufgabe: Werte und Typen
Untersuche den folgenden Code zuerst ohne ihn auszuführen. Notiere für jede Ausgabe den erwarteten Wert und Datentyp. Führe den Code anschließend aus und vergleiche deine Vermutung mit dem Ergebnis.
erste_zahl = 5
zweite_zahl = 5.0
zahl_als_text = "5"
print(erste_zahl + 1)
print(zweite_zahl + 1)
print(zahl_als_text)
print(type(erste_zahl))
print(type(zweite_zahl))
print(type(zahl_als_text))
Beantworte danach: Welche beiden Werte sehen ähnlich aus, haben aber unterschiedliche Datentypen? Warum funktioniert die Addition mit erste_zahl, aber nicht mit zahl_als_text? Wie müsste "5" umgewandelt werden, damit du damit rechnen kannst?
Datentypen im Überblick
Der Datentyp beschreibt, welche Art von Wert vorliegt und welche Operationen sinnvoll sind. Mit type() wird der aktuelle Typ untersucht.
| Kategorie | Datentypen | Beispiel |
|---|---|---|
| Texttyp | str | "Python" |
| Numerische Typen | int, float, complex | 17, 4.5, 3 + 5j |
| Sequenztypen | list, tuple, range | [1, 2] |
| Zuordnungstyp | dict | {"name": "Samira"} |
| Set-Typen | set, frozenset | {"Python", "Java"} |
| Boolescher Typ | bool | True |
| Binäre Typen | bytes, bytearray, memoryview | b"Hi" |
| Kein Wert | NoneType | None |
werte = [17, 4.5, "Python", True, None]
for wert in werte:
print(wert, type(wert))
Die Schleife wird später ausführlich behandelt. Hier zeigt sie nur, dass unterschiedliche Werte unterschiedliche Typen haben können.
Datentypen mit Konstruktoren erzeugen
Viele Datentypen besitzen eine Konstruktorfunktion. Damit kann ein Wert gezielt in einen bestimmten Typ umgewandelt oder eine Sammlung erstellt werden.
| Konstruktor | Beispiel | Ergebnis |
|---|---|---|
str() | str(17) | "17" |
int() | int("17") | 17 |
float() | float("4.5") | 4.5 |
complex() | complex(3, 5) | (3+5j) |
list() | list((1, 2)) | [1, 2] |
tuple() | tuple([1, 2]) | (1, 2) |
range() | range(4) | Zahlenfolge 0 bis 3 |
dict() | dict(name="Samira") | Dictionary |
set() | set([1, 2, 2]) | {1, 2} |
frozenset() | frozenset([1, 2]) | unveränderbare Menge |
bool() | bool(1) | True |
bytes() | bytes(3) | drei Bytes |
bytearray() | bytearray(3) | veränderbare Bytes |
memoryview() | memoryview(bytes(3)) | Speicheransicht |
zahlen_liste = list((1, 2, 3))
zahlen_tupel = tuple([1, 2, 3])
zahlen_bereich = range(3)
personen = dict(name="Samira", alter=17)
einzigartige_zahlen = set([1, 1, 2, 3])
print(zahlen_liste)
print(zahlen_tupel)
print(list(zahlen_bereich))
print(personen)
print(einzigartige_zahlen)
Casting: Werte bewusst umwandeln
Casting bedeutet, einen Wert in einen anderen Datentyp umzuwandeln. Die Umwandlung muss inhaltlich möglich sein.
| Funktion | Aufgabe | Beispiel |
|---|---|---|
int() | ganze Zahl erzeugen | int("7") |
float() | Kommazahl erzeugen | float("4.5") |
str() | Text erzeugen | str(7) |
bool() | Wahrheitswert erzeugen | bool(1) |
ganze_zahl = int("7")
kommazahl = float("4.5")
text = str(ganze_zahl)
print(ganze_zahl + 1)
print(kommazahl + 1)
print(text + " Punkte")
Weitere Umwandlungen:
print(int(2.8)) # 2: Nachkommastellen werden abgeschnitten.
print(float(3)) # 3.0
print(float("3")) # 3.0
print(str(3.0)) # "3.0"
print(int("-5"))
print(float("-2.3"))
Nicht jede Umwandlung funktioniert. int("vier") erzeugt einen ValueError, weil der Text keine ganze Zahl beschreibt. Auch int("5.5") ist nicht möglich. Ein complex-Wert kann nicht direkt in int oder float umgewandelt werden, weil dabei der Imaginärteil verloren ginge.
Zahlen
Ganze Zahlen: int
Eine Ganzzahl kann positiv, negativ oder 0 sein. Python kann sehr große Ganzzahlen verarbeiten:
klein = -1
gross = 35656222554887711
berechnet = 5 * 1000
print(klein, type(klein))
print(gross, type(gross))
print(berechnet, type(berechnet))
Kommazahlen: float
Kommazahlen werden in Python mit einem Punkt geschrieben:
preis = 4.50
temperatur = -2.3
print(preis, type(preis))
print(temperatur, type(temperatur))
Sehr große oder sehr kleine Werte können in wissenschaftlicher Schreibweise mit e angegeben werden:
print(35e3) # 35000.0
print(12E4) # 120000.0
print(-87.7e2) # -8770.0
Komplexe Zahlen: complex
Eine komplexe Zahl besteht aus einem Realteil und einem Imaginärteil. Python verwendet j für die imaginäre Einheit. Dieses Thema ist für den Grundkurs kein Kernwerkzeug, zeigt aber ein weiteres Zahlenmodell.
zahl = 3 + 5j
print(zahl)
print(type(zahl))
print(zahl.real)
print(zahl.imag)
Zahlen umwandeln
ganze_zahl = 1
kommazahl = 2.8
als_float = float(ganze_zahl)
als_int = int(kommazahl)
als_complex = complex(ganze_zahl)
print(als_float)
print(als_int)
print(als_complex)
Beim Umwandeln von float zu int werden Nachkommastellen nicht gerundet, sondern abgeschnitten.
Zufallszahlen mit random
random ist ein Modul der Standardbibliothek. randrange(start, stop) erzeugt eine ganze Zahl ab start bis vor stop.
import random
zahl = random.randrange(1, 10)
print(zahl) # 1 bis 9 sind möglich.
zahl_mit_zehn = random.randrange(1, 11)
print(zahl_mit_zehn) # 1 bis 10 sind möglich.
Die Reihenfolge muss stimmen. random.randrange(10, 1) kann keine Zahl erzeugen und führt zu einem ValueError.
Aufgaben: Variablen, Casting und Zahlen
Aufgabe 1: Werte und Typen
Lege Variablen für deinen Namen, dein Alter, eine Punktzahl, einen Preis und einen Wahrheitswert an. Gib jeweils Wert und Typ aus.
Aufgabe 2: Variablennamen prüfen
Entscheide, welche Namen gültig sind, und korrigiere die ungültigen Namen:
2zahl
mein-name
mein name
if
punktzahl_1
_startwert
Aufgabe 3: Casting untersuchen
Wandle "15" in eine Ganzzahl, "3.2" in eine Kommazahl und eine Zahl in einen String um. Gib Ergebnisse und Typen aus. Teste danach int("Brot") kontrolliert und beschreibe den Fehler.
Aufgabe 4: Kleine Berechnung
Ein Kurs hat eine maximale Punktzahl von 100. Eine Person erreicht 78 Punkte und bekommt 2.5 Bonuspunkte. Berechne das Ergebnis und gib es lesbar aus.
Aufgabe 5: Zufall
Erzeuge eine Zufallszahl zwischen 1 und 100. Achte darauf, dass auch 100 möglich ist. Erkläre, warum die obere Grenze angepasst werden muss.
Optionale Zusatzaufgaben
- Lege drei Variablen in einer Zeile an und entpacke anschließend eine Liste mit drei Werten.
- Erzeuge Beispiele für
list,tuple,dict,set,bytesundNoneund gib die Typen aus. - Untersuche
bool(0),bool(1),bool(""),bool("Hi"),bool([])undbool([0]). - Schreibe ein Programm, das wissenschaftliche Schreibweisen in normale Ausgaben umwandelt.
- Vergleiche eine Ganzzahl, eine Kommazahl und einen String mit scheinbar gleichem Inhalt.
- Erstelle eine kleine Umwandlungskette wie
str(float("3"))und dokumentiere jeden Zwischentyp.

