Ein verbessertes Mathe-Quiz
Abschlussbedingungen
Listing 1
# Achtung, dieses Programm enthält noch einen gemeinen Fehler!
import random
while(True):
zahl1 = random.randint(1, 10)
zahl2 = random.randint(1, 10)
loesung = zahl1 + zahl2
print(zahl1, "+", zahl2, "= ?")
antwort = input()
if (loesung == antwort):
print("Richtig")
else:
print("Falsch")
Listing 2
# Hier ist der Fehler korrigiert...
import random
while(True):
zahl1 = random.randint(1, 10)
zahl2 = random.randint(1, 10)
loesung = zahl1 + zahl2
print(zahl1, "+", zahl2, "= ?")
# Die Eingabe muss noch mit int() in eine ganze Zahl umgewandelt werden:
antwort = int(input())
if (loesung == antwort):
print("Richtig")
else:
print("Falsch")
Listing 3
# Eine Erweiterung, bei der im zufälligen Wechsel Addition und Multiplikation geübt werden
import random
while(True):
zahl1 = random.randint(1, 10)
zahl2 = random.randint(1, 10)
rechenart = random.choice(["plus", "mal"])
if rechenart == "plus":
loesung = zahl1 + zahl2
print(zahl1, "+", zahl2, "= ?")
if rechenart == "mal":
loesung = zahl1 * zahl2
print(zahl1, "*", zahl2, "= ?")
antwort = int(input())
if (loesung == antwort):
print("Richtig!")
else:
print("Falsch. Die richtige Lösung lautet:", loesung)
Listing 4
# Hier kommen noch "minus" und "geteilt" hinzu.
# "geteilt" ist ein spezieller Fall...
import random
while(True):
zahl1 = random.randint(1, 10)
zahl2 = random.randint(1, 10)
rechenart = random.choice(["mal", "plus", "minus", "geteilt"])
if rechenart == "plus":
loesung = zahl1 + zahl2
print(zahl1, "+", zahl2, "= ?")
if rechenart == "minus":
loesung = zahl1 - zahl2
print(zahl1, "-", zahl2, "= ?")
if rechenart == "mal":
loesung = zahl1 * zahl2
print(zahl1, "*", zahl2, "= ?")
if rechenart == "geteilt":
# Hier wird erst einmal die Lösung berechnet...
loesung = random.randint(1, zahlenbereich)
# Und dann erneut zahl2:
zahl2 = zahl1 * loesung
print(zahl2, "/", zahl1, "= ?")
antwort = int(input())
if (loesung == antwort):
print("Richtig!")
punkte += 1
else:
print("Falsch. Die richtige Lösung lautet:", loesung)
Listing 5
# Jetzt ist es beinahe schon ein richtiges Programm!
import random
anzahl_aufgaben = int(input("Wie viele Aufgaben willst Du lösen? "))
zahlenbereich = int(input("Was soll die obere Grenze des Zahlenbereichs sein? "))
punkte = 0
for _ in range(anzahl_aufgaben):
zahl1 = random.randint(1, zahlenbereich)
zahl2 = random.randint(1, zahlenbereich)
rechenart = random.choice(["mal", "plus", "minus", "geteilt"])
if rechenart == "plus":
loesung = zahl1 + zahl2
print(zahl1, "+", zahl2, "= ?")
if rechenart == "minus":
loesung = zahl1 - zahl2
print(zahl1, "-", zahl2, "= ?")
if rechenart == "mal":
loesung = zahl1 * zahl2
print(zahl1, "*", zahl2, "= ?")
if rechenart == "geteilt":
loesung = random.randint(1, zahlenbereich)
zahl2 = zahl1 * loesung
print(zahl2, "/", zahl1, "= ?")
antwort = int(input())
if (loesung == antwort):
print("Richtig!")
punkte += 1
else:
print("Falsch. Die richtige Lösung lautet:", loesung)
print("Du hast", punkte, "von", anzahl_aufgaben,"möglichen Punkten erreicht")
Vorschlag für eine Erweiterung
Du könntest Listing 5 so erweitern, dass am Ende des Programms abhängig vom Anteil der richtigen Lösungen eine Kritik, ein "Naja" oder ein Lob ausgegeben werden.
Zuletzt geändert: Donnerstag, 20. Februar 2025, 13:25