🐍

Python Grundlagen

Interaktives Lernmaterial nach der PRIMM-Methode für Klasse 8 Informatik & Medienbildung am Gymnasium Baden-Württemberg.

Klasse 8 PRIMM-Methode Python 3
🎯 Worum geht's? Klasse 8 · mehrere Stunden (Kurs)

Nach dieser Seite kannst du …

  • vorhersagen, was ein Python-Programm ausgibt, und deine Vorhersage überprüfen
  • fremden Code untersuchen, verändern und schließlich selbst schreiben (PRIMM)
  • Ein- und Ausgabe, Variablen und Datentypen verwenden

Vorwissen: keines

🔍 Die PRIMM-Methode – so arbeitest du hier

Jedes Kapitel folgt diesem Lernzyklus. Die farbigen Boxen zeigen dir, in welcher Phase du dich befindest:

🔮

Predict

Überlege vor dem Ausführen, was der Code ausgeben wird.

▶️

Run

Führe den Code aus und vergleiche mit deiner Vorhersage.

🔎

Investigate

Ändere Werte gezielt und beobachte, was passiert.

✏️

Modify

Verändere den Code, um ein neues Ziel zu erreichen.

🏗️

Make

Schreibe eigenen Code von Grund auf – mit automatischen Tests.

1

Ein- und Ausgabe von Text

Für Textausgaben genügt in Python ein einfaches print() – kein System.out.println() wie in Java!

☕ Java
System.out.println("Hallo Java!");
🐍 Python
print("Hallo Python!")
🔮 Predict

Lies den Code unten, ohne ihn auszuführen. Was wird genau ausgegeben? Schreibe deine Vorhersage Zeile für Zeile auf.

print("Hallo Python!")
print("Klasse", 8)
print()
▶ Run

Führe den Code jetzt aus. Stimmt das Ergebnis mit deiner Vorhersage überein? Falls nicht: Was war anders?

pythonStrg+Enter = Ausführen
🔎 Investigate

Verändere den Code oben und beobachte, was passiert:

  • Was gibt print() ohne Inhalt aus?
  • Kann print() mehrere Werte gleichzeitig ausgeben? Teste: print("Hallo", "Welt", 42)
  • Was ist der Unterschied zwischen print(8) und print("8")? (Tipp: Nutze type())

Konsoleneingabe mit input()

Konsoleneingaben lassen sich über input() realisieren:

🔮 Predict

Angenommen, der Nutzer gibt Lisa ein. Was gibt das Programm aus?

eingabe = input("Gib deinen Namen ein: ")
print("Hallo", eingabe)
pythonStrg+Enter = Ausführen
⚠️ Wichtig: input() liefert immer einen String! Für Zahleneingaben muss man mit int() oder float() konvertieren.
🔮 Predict

Der Nutzer gibt 7 ein. Was gibt das Programm aus?

zahl = int(input("Nenne mir eine Zahl: "))
print("Das Quadrat deiner Zahl lautet", zahl * zahl)
python
✏️ Modify

Ändere das Quadrat-Programm oben so, dass es statt dem Quadrat den Würfel der Zahl ausgibt (also zahl * zahl * zahl). Passe auch den Ausgabetext an.

🧠 Mini-Quiz: Was gibt print("3" + "5") aus?
8
35
Fehlermeldung
2

Variablen und Typen

Einer der Hauptunterschiede zu Java ist Pythons dynamische Typisierung. Der Typ einer Variable wird durch die Wertzuweisung bestimmt – keine explizite Deklaration nötig!

☕ Java
int a = 4;
System.out.println(a);
// Typ-Änderung nicht möglich!
🐍 Python
a = 4
print(a)
a = "Schönes Wetter!"
print(a)  # Kein Fehler!
🔮 Predict

Was gibt dieses Programm aus? Achte genau auf die Reihenfolge der Zuweisungen.

a = 4
print(a)
a = "Schönes Wetter heute!"
print(a)
python

Datentypen ermitteln mit type()

🔮 Predict

Was gibt type() für die folgenden Ausdrücke zurück? Schreibe die exakte Python-Ausgabe auf.

a = "Hallo!"
print(type(a))
a = 34
print(type(a))
python

Die wichtigsten Datentypen

Python-Typ Java-Äquivalent Beispiel Beschreibung
str String "Hallo" Zeichenkette
int int / long -56 Ganze Zahl
float double 3.4565 Kommazahl
bool boolean True / False Wahrheitswert
⚠️ True und False werden in Python groß geschrieben!
📝 In Python nutzt man snake_case (meine_variable), in Java camelCase (meineVariable).
🔎 Investigate

Nutze den Code-Block unten zum Ausprobieren. Beantworte:

  • Was ist der Typ von 3.0? Von True? Von int("42")?
  • Was passiert bei print(type(3 + 1.0))? Welcher Typ entsteht, wenn man int und float addiert?
  • Kann man str(42) und "Punkte" zusammensetzen? Teste: print(str(42) + " Punkte")
python
✏️ Modify

Ergänze im Code-Block der Aufgabe unten print(type(...))-Ausgaben für alle vier Variablen, bevor du auf „Testen" klickst.

✏️
🎯 Aufgabe
Ermittle die Datentypen der folgenden Variablen mit type() und füge passende print()-Ausgaben ein:
python – Aufgabe
🏗️ Make

Schreibe ein eigenes kurzes Programm, das:

  • drei Variablen verschiedener Typen anlegt (selbst gewählt),
  • für jede den Wert und den Typ ausgibt,
  • eine Variable anschließend in einen anderen Typ umwandelt und das Ergebnis zeigt.
python – Make
🧠 Mini-Quiz: Was ist der Typ von x = int("42")?
str
int
float
Fehlermeldung
3

Operatoren

Arithmetische Operatoren

Operator Bedeutung Beispiel Ergebnis
/ Division → immer float 5 / 2 2.5
// Ganzzahl-Division 5 // 2 2
% Modulo (Rest) 5 % 2 1
** Potenz 2 ** 8 256
🔮 Predict

Was gibt jede Zeile aus? Berechne im Kopf, bevor du ausführst!

a = 5
b = 2
print(a / b)
print(a // b)
print(a % b)
print(b ** a)
python
🔎 Investigate

Untersuche den %-Operator – er ist äußerst nützlich!

  • Was ergibt 7 % 2? Und 8 % 2? Was kannst du über die Zahl schließen, wenn das Ergebnis 0 ist?
  • Was ergibt 15 % 10? Und 123 % 10? Was liefert % 10 immer?
  • Was gibt type(5 / 2) im Vergleich zu type(5 // 2) aus?
python

Zuweisungsoperatoren

⚠️ ++ und -- gibt es in Python nicht! Stattdessen: a += 1 / a -= 1
🔮 Predict

Was wird nach jeder Zeile ausgegeben?

a = 14
a += 4
print(a)
a -= 2
print(a)
a *= 3
print(a)
python

Logische Operatoren

☕ Java
!a        // NOT
a || b    // OR
a && b    // AND
🐍 Python
not a     # NOT
a or b    # OR
a and b   # AND
🔮 Predict

Was geben diese Ausdrücke aus? Denke Schritt für Schritt.

a = False
b = True
c = False
print(not a)
print(a or b)
print(a and b)
print((a or b) and not (b or c))
python
✏️ Modify

Verändere im Code oben die Startwerte von a, b und c so, dass (a or b) and not (b or c) den Wert True ergibt. Erkläre danach, warum.

🏗️ Make

Schreibe ein Programm, das den Nutzer nach zwei Zahlen fragt und dann ausgibt, ob die erste Zahl größer als die zweite und gleichzeitig gerade ist. Nutze and und %.

python – Make
🧠 Mini-Quiz: Was ergibt 10 / 2 in Python?
5 (int)
5.0 (float)
Fehlermeldung
4

if-Anweisung

In Python gibt es keine geschweiften Klammern! Die Zugehörigkeit von Code-Blöcken wird durch Einrückung bestimmt – das ist syntaktisch zwingend.

☕ Java
if (alter >= 18) {
    System.out.println("Volljährig!");
} else {
    System.out.println("Minderjährig!");
}
🐍 Python
if alter >= 18:
    print("Volljährig!")
else:
    print("Minderjährig!")
🔮 Predict

Was gibt das Programm aus, wenn der Nutzer 15 eingibt? Und wenn er 18 eingibt?

eingabe = int(input("Wie alt bist du? "))

if eingabe >= 18:
    print("Du bist volljährig!")
else:
    print("Du bist noch nicht volljährig!")
python

elif statt else if

🔮 Predict

Was gibt das Programm bei der Eingabe 25 aus? Und bei 5? Und bei 15?

eingabe = int(input("Gib eine Zahl ein: "))

if eingabe < 10:
    print("Hallo!")
elif eingabe < 20:
    print("Hi!")
elif eingabe < 30:
    print("Tach!")
else:
    print("Moin!")
python
🔎 Investigate

Experimentiere mit dem Grußprogramm oben:

  • Was passiert genau an den Grenzen – bei Eingabe 10, 20 und 30?
  • Was ändert sich, wenn du alle elif durch if ersetzt? Warum ist das ein Unterschied?
  • Füge einen weiteren elif-Zweig für Zahlen ab 100 hinzu, der "Ahoi!" ausgibt.
✏️ Modify

Erweitere das Volljährigkeitsprogramm (erstes Beispiel dieses Kapitels) um einen zusätzlichen Fall: Wenn jemand genau 18 ist, soll die Meldung „Du bist gerade 18 geworden – herzlichen Glückwunsch!" erscheinen.

✏️
🎯 Aufgabe
Schreibe ein Programm, das nach Eingabe eines Namens eine Ausgabe gemäß der Tabelle erzeugt. Hinweis: len(s) liefert die Länge des Strings.
Anzahl Buchstaben Ausgabe
bis 5 Kurzer Name!
6 bis 10 Einigermaßen kurzer Name!
11 bis 16 Einigermaßen langer Name!
ab 17 Sehr langer Name!
python – Aufgabe
🏗️ Make

Schreibe ein Notenrechner-Programm: Lies eine Punktzahl (0–100) ein und gib die entsprechende Schulnote aus (eigene Grenzen selbst festlegen). Das Programm soll mindestens 5 Noten unterscheiden.

python – Make
5

Listen

In Python gibt es keinen klassischen Array-Typ. Stattdessen werden Listen verwendet – flexibel in Länge und Typen.

☕ Java (Array)
int[] zahlen = {11, 67, 5, 4};
// Feste Größe, nur ein Typ
🐍 Python (Liste)
zahlen = [11, 67, 5, 4]
# Flexibel, gemischte Typen ok
🔮 Predict

Was gibt jede Zeile aus?

l2 = [11, 67, 5, 4, 8, 9]
l3 = ["Peter", "Uschi", "Barbara", "Lothar", "Heike"]
print(l2[0])
l3[3] = "Gabi"
print(l3)
python

Wichtige Listen-Methoden

Methode Bedeutung
liste.append(x) Fügt x am Ende hinzu
liste.pop() Entfernt letztes Element
liste.pop(i) Entfernt Element an Index i
liste.insert(i, x) Fügt x an Position i ein
liste.remove(x) Entfernt erstes Vorkommen von x
len(liste) Gibt die Länge zurück
liste.copy() Erstellt eine echte Kopie
🔎 Investigate

Führe den folgenden Code aus und erkläre nach jeder Zeile, was die Methode bewirkt. Füge nach jeder Operation ein print() ein, um die Veränderung zu sehen.

l1 = []
l2 = [11, 67, 5, 4, 8, 9]
l3 = ["Peter", "Uschi", "Barbara", "Lothar", "Heike"]

l1.append("Apfel")
l2.pop()
l3.pop(1)
l3.insert(2, "Hans")
l3.remove("Heike")
l = len(l2)
i = l3.index("Barbara")
python
🔮 Predict

Was gibt print(l1) nach diesen Zeilen aus? Begründe deine Vorhersage.

l1 = ["Apfel"]
l5 = l1
l5.append("Birne")
print(l1)
python
✏️ Modify

Gegeben: noten = [2, 1, 3, 2, 4, 1, 2]. Ändere die Liste im Code-Block unten so, dass:

  • die letzte Note entfernt wird,
  • die Note 5 an Position 0 eingefügt wird,
  • das erste Vorkommen von 1 entfernt wird.

Gib die Liste nach jeder Änderung aus.

python – Modify
✏️
🎯 Aufgabe
Führe alle fünf Listenoperationen der Reihe nach durch. Ausgangsliste: ["Apfel", "Banane", "Kirsche", "Dattel", "Erdbeere"]
  1. Hänge "Feige" ans Ende.
  2. Entferne das letzte Element.
  3. Füge "Mango" an Position 2 ein.
  4. Entferne "Dattel".
  5. Gib die Länge der Liste aus.
python – Aufgabe
🏗️ Make

Schreibe ein Programm, das eine Einkaufsliste verwaltet. Der Nutzer kann so lange Artikel eingeben, bis er fertig eingibt. Am Ende wird die vollständige Liste ausgegeben.

python – Make
6

Schleifen

while-Schleife

🔮 Predict

Wie viele Zeilen gibt das Programm aus, und was steht in der letzten Zeile?

zahl = 0
while zahl <= 10:
    print(zahl)
    zahl += 1
python
🔎 Investigate

Verändere die while-Schleife oben und beobachte:

  • Was passiert, wenn du zahl += 1 entfernst? (Nur kurz testen – dann Seite neu laden!)
  • Was ändert sich, wenn du <= 10 durch < 10 ersetzt?
  • Wie kannst du mit zahl += 2 nur jede zweite Zahl ausgeben?
✏️ Modify

Ändere die while-Schleife oben so, dass sie nur jede gerade Zahl von 0 bis 20 ausgibt. Nutze dein Wissen aus dem Investigate.

✏️
🎯 Aufgabe
Schreibe eine while-Schleife, die alle geraden Zahlen von 0 bis 20 ausgibt.
python – Aufgabe

for-Schleife als Zählschleife

Aufruf Bedeutung
range(n) 0, 1, ..., n-1
range(start, stop) start, ..., stop-1
range(start, stop, step) mit Schrittweite
🔮 Predict

Was gibt dieses Programm aus? Zähle die Ausgaben und schreibe die erste und letzte Zahl auf.

for i in range(3, 45, 3):
    print(i)
python
🔎 Investigate

Experimentiere mit range() im Code-Block oben:

  • range(10, 0, -1) – was gibt das aus? Wofür könnte man das brauchen?
  • range(0, 101, 10) – was gibt das aus?
  • Kann man mit for farbe in ["rot", "grün", "blau"]: print(farbe) direkt über eine Liste iterieren?
python
✏️ Modify

Ändere die foreach-Schleife oben so, dass sie zusätzlich die Länge jeder Farbe ausgibt, z.B.: rot (3 Buchstaben).

✏️
🎯 Aufgabe
Berechne mit einer for-Schleife die Summe aller Zahlen von 1 bis 100. Erwartetes Ergebnis: 5050.
python – Aufgabe
🏗️ Make

Schreibe ein Programm, das die Multiplikationstabelle einer vom Nutzer eingegebenen Zahl ausgibt (1× bis 10×). Beispiel für 7: 7 x 1 = 7, 7 x 2 = 14, ..., 7 x 10 = 70.

python – Make
🧠 Mini-Quiz: Was gibt range(1, 10, 2) aus?
1, 2, 3, 4, 5, 6, 7, 8, 9
1, 3, 5, 7, 9
2, 4, 6, 8, 10
7

Funktionen

Syntax und Aufbau

☕ Java
static int berechneQuadrat(int n) {
    return n * n;
}
🐍 Python
def berechne_quadrat(n):
    return n ** 2
🔮 Predict

Was geben die Funktionsaufrufe unten aus?

def berechne_quadrat(n):
    return n ** 2

def noch_nicht_fertig():
    pass

print("3 hoch 2 =", berechne_quadrat(3))
print("7 hoch 2 =", berechne_quadrat(7))
print(noch_nicht_fertig())
python

Optionale Parameter (Standardwerte)

🔮 Predict

Was geben diese Aufrufe aus?

def gruesse(name, gruss="Hallo"):
    print(gruss, name)

gruesse("Peter")
gruesse("Ulrike", "Servus")

def gruesse_lang(name, gruss="Hallo", kosename="alter Freund"):
    print(gruss, name + ",", kosename)

gruesse_lang("Peter")
gruesse_lang("Ulrike", kosename="liebste Schwester")
python

Gültigkeit von Variablen (Scope)

🔮 Predict

Was gibt das Programm aus? Was denkst du – warum?

a = 65

def tue_etwas():
    a = 14
    print("Innerhalb:", a)

tue_etwas()
print("Außerhalb:", a)
python
🔎 Investigate

Verändere das Scope-Programm oben:

  • Füge global a am Anfang von tue_etwas() ein. Was ändert sich?
  • Was passiert, wenn du innerhalb der Funktion eine Variable benutzt, die nur außen definiert ist (ohne Zuweisung innen)?
✏️ Modify

Ändere die Funktion gruesse(name, gruss="Hallo") oben so, dass sie zusätzlich einen optionalen Parameter ausrufezeichen=True bekommt. Wenn True, wird ein ! angehängt, sonst ein ..

✏️
🎯 Aufgabe 1 – Temperatur
Implementiere celsius_zu_fahrenheit(grad). Formel: F = C × 9/5 + 32
python – Aufgabe
✏️
🎯 Aufgabe 2 – Potenz
Vervollständige potenziere(basis, exponent=2). Standardwert für Exponent ist 2.
python – Aufgabe
✏️
🎯 Aufgabe 3 – Gerade Zahlen
Schreibe ist_gerade(zahl) → True wenn gerade, sonst False. Nutze %!
python – Aufgabe
✏️
🎯 Aufgabe 4 – Maximum
Schreibe max_von_drei(a, b, c) → gibt die größte Zahl zurück. Keine eingebaute max()-Funktion!
python – Aufgabe
🏗️ Make

Schreibe eine Funktion berechne_bmi(gewicht, groesse), die den Body-Mass-Index berechnet (BMI = Gewicht / Größe²) und einen Text wie „Dein BMI beträgt 22.5" zurückgibt. Teste sie mit eigenen Werten.

python – Make
8

Zufallszahlen & Module

Das random-Modul wird mit import eingebunden:

Funktion Bedeutung
random.random() float zwischen 0.0 und 1.0
random.randint(a, b) int zwischen a und b (beide inkl.)
random.choice(liste) Zufälliges Element aus Liste
random.shuffle(liste) Mischt eine Liste durch
🔮 Predict

Kannst du die Ausgabe dieses Programms genau vorhersagen? Wenn ja – warum? Wenn nein – warum nicht?

import random
zufallsliste_int = []
for i in range(10):
    zufallsliste_int.append(random.randint(20, 30))
print(zufallsliste_int)
python
🔎 Investigate

Führe das Programm oben mehrmals aus und beobachte:

  • Wie oft erscheint jede Zahl, wenn du range(100) verwendest? Ist die Verteilung gleichmäßig?
  • Was macht random.shuffle(liste)? Teste mit l = [1,2,3,4,5]; random.shuffle(l); print(l)
  • Wie kannst du sicherstellen, dass du bei jedem Programmlauf dieselbe Zufallsfolge erhältst? (Stichwort: random.seed(42))
python
✏️ Modify

Ändere das Würfelsimulationsprogramm oben so, dass es einen fairen Münzwurf (0 = Kopf, 1 = Zahl) 1000-mal simuliert und ausgibt, wie oft Kopf und wie oft Zahl erschienen ist.

🏆
🎯 Abschluss-Aufgabe: Zahlen-Ratespiel
Schreibe ein vollständiges Ratespiel:
  • Das Programm wählt eine Zufallszahl zwischen 1 und 20.
  • Der Nutzer gibt Zahlen ein, bis er getroffen hat.
  • Bei jedem Fehlversuch: „Zu groß!" oder „Zu klein!"
  • Am Ende: Anzahl der Versuche ausgeben.
python – Aufgabe
🏗️ Make

Erweitere das Ratespiel um folgende Funktion: Das Programm gibt nach dem Spiel eine Bewertung aus – z.B. „Beeindruckend! Nur 1-3 Versuche" / „Gut! 4-7 Versuche" / „Weiter üben! Mehr als 7 Versuche".