MINT lernen

Ein Quiz programmieren

Zwei Sachaufgaben zum Quiz-Projekt mit Hinweisen und Erwartungshorizont.

Dein Fortschritt:
0 / 0 Aufgaben
1

Der Vokabeltrainer

AFB I–II

Nele 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")
  1. Analysiere, welche Aufgabe die Zeilen 1–2, Zeile 4, Zeile 6 und Zeile 10 im Programm haben.
  2. 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.
  3. Begründe, warum Nele for i in range(len(deutsch)): verwendet und nicht for wort in deutsch:.

Hinweise

Hinweis zu Aufgabe a)
Daten — Ablauf — Vergleich — Auswertung.
Hinweis zu Aufgabe b)
Gehe die vier Durchläufe einzeln durch und wende strip() und lower() an.
Hinweis zu Aufgabe c)
Was braucht man außer dem deutschen Wort noch in jedem Durchlauf?

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.

2

Projekt: Einmaleins-Trainer

AFB II–III

Fü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.

  1. 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.
  2. Implementiere den Einmaleins-Trainer nach deinem Plan.
  3. 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)
Orientiere dich am Quiz: Daten/Startwerte, Wiederholung, Vergleich, Auswertung.
Hinweis zu Aufgabe b)
Vergleiche Texte: Wandle das richtige Ergebnis mit str() um — dann stürzt das Programm bei einer Eingabe wie „sieben“ nicht ab.
Hinweis zu Aufgabe c)
Was würde passieren, wenn du statt Text-Vergleich 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.