Der Vokabeltrainer
AFB I–IINele hat für ihren kleinen Bruder einen Vokabeltrainer geschrieben:
deutsch = ["Hund", "Baum", "Fenster", "Schule"]englisch = ["dog", "tree", "window", "school"]richtig = 0for i in range(len(deutsch)): antwort = input(deutsch[i] + " auf Englisch: ") if antwort.strip().lower() == englisch[i]: richtig += 1 else: print("Richtig wäre:", englisch[i])print(richtig, "von", len(deutsch), "richtig")
- Analysiere, welche Aufgabe die Zeilen 1–2, Zeile 4, Zeile 6 und Zeile 10 im Programm haben.
- Bestätige, dass das Programm bei den Eingaben „Dog“, „three“, „window “ (mit Leerzeichen) und „Schul“ genau „2 von 4 richtig“ ausgibt. Gib dazu den kompletten Konsolenverlauf an.
- Begründe, warum Nele
for i in range(len(deutsch)):verwendet und nichtfor wort in deutsch:.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
Zeilen 1–2: die Daten — zwei parallele Listen, an gleicher Position stehen Wort und Übersetzung. Zeile 4: Schleife über alle Indizes 0 bis 3, damit jedes Wort genau einmal abgefragt wird. Zeile 6: Vergleich der bereinigten Eingabe (Rand-Leerzeichen weg, klein) mit der Lösung an derselben Position. Zeile 10: Auswertung — Anzahl richtiger Antworten von allen.
Erwartungshorizont zu Aufgabe b)
„Dog“ → „dog“ richtig; „three“ ≠ „tree“ falsch; „window “ → „window“ richtig; „Schul“ → „schul“ ≠ „school“ falsch. Also 2 von 4:
Hund auf Englisch: Dog Baum auf Englisch: three Richtig wäre: tree Fenster auf Englisch: window Schule auf Englisch: Schul Richtig wäre: school 2 von 4 richtig
Erwartungshorizont zu Aufgabe c)
Mit for wort in deutsch hätte man nur das deutsche Wort, aber nicht seine Position. Die Übersetzung steht in der zweiten Liste an derselben Position; dafür braucht man den Index i, um englisch[i] zu erreichen. range(len(deutsch)) liefert genau die passenden Indizes, egal wie viele Vokabeln die Liste hat.
Projekt: Einmaleins-Trainer
AFB II–IIIFür die Grundschule nebenan soll ein Einmaleins-Trainer entstehen: Er stellt 5 zufällige Aufgaben mit Zahlen von 2 bis 9, zählt die richtigen Antworten und gibt am Ende das Ergebnis in Prozent und einen Kommentar aus (100 %: „Perfekt!“, ab 60 %: „Gut gemacht!“, sonst: „Weiter üben!“). Zufallszahlen erzeugt random.randint(2, 9) nach import random.
- Entwirf einen Ablaufplan für den Trainer: Welche Variablen, welche Schleife, welche Funktion und welche Verzweigung brauchst du? Gib die Schritte in der richtigen Reihenfolge an.
- Implementiere den Einmaleins-Trainer nach deinem Plan.
- Bewerte deinen Trainer: Teste ihn mit ungewöhnlichen Eingaben (z. B. „ 42 “, „sieben“, leere Eingabe) und nenne eine sinnvolle Erweiterung.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
int(eingabe) == a * b schreibst?Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
1. Startwerte: richtig = 0, runden = 5. 2. Funktion aufgabe(a, b): stellt die Aufgabe, liest ein, gibt True/False zurück. 3. for-Schleife über 5 Runden (Anzahl bekannt): zwei Zufallszahlen, Funktion aufrufen, bei True richtig += 1 und Rückmeldung. 4. Nach der Schleife Prozent berechnen. 5. if/elif/else für den Kommentar.
Erwartungshorizont zu Aufgabe b)
import randomdef aufgabe(a, b): eingabe = input(str(a) + " · " + str(b) + " = ") return eingabe.strip() == str(a * b)richtig = 0runden = 5for i in range(runden): a = random.randint(2, 9) b = random.randint(2, 9) if aufgabe(a, b): richtig += 1 print("Richtig!") else: print("Falsch, richtig ist", a * b)prozent = richtig * 100 // rundenprint(richtig, "von", runden, "richtig =", prozent, "%")if prozent == 100: print("Perfekt!")elif prozent >= 60: print("Gut gemacht!")else: print("Weiter üben!")
Beispiel mit 4 richtigen Antworten:
4 von 5 richtig = 80 % Gut gemacht!
Erwartungshorizont zu Aufgabe c)
Durch eingabe.strip() == str(a * b) werden „ 42 “ richtig erkannt, und „sieben“ oder eine leere Eingabe zählen einfach als falsch — das Programm stürzt nicht ab. Mit int(eingabe) gäbe es bei „sieben“ einen ValueError. Schwäche: Die gleiche Aufgabe kann mehrfach kommen, und Kinder bekommen bei Fehlern keinen zweiten Versuch. Sinnvolle Erweiterungen: bis zu drei Versuche pro Aufgabe mit while (wie im Quiz), eine wählbare Reihe (nur die 7er) oder eine Liste der falsch gelösten Aufgaben, die am Ende wiederholt wird.
