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