import random, time from operator import add, mul, sub, truediv rechenart = { "plus": add, "minus": sub, "mal": mul, "geteilt durch": truediv } class Aufgabe: def __init__(self, anweisung, bereich) -> None: self.anweisung = anweisung self.bereich = bereich richtige = 0 falsche = 0 antwort = 0 fragenummer = 0 print(""" Kopfrechentrainer Levelauswahl: (1) Addition zweier ganzer Zahlen zwischen -100 und 100 (2) Addition und Subtraktion zweier ganzer Zahlen zwischen -100 und 100 (3) Kleines Einmaleins (Multiplikation zweier natürlicher Zahlen kleiner-gleich 10) (4) Grosses Einmaleins (Multiplikation zweier natürlicher Zahlen kleiner-gleich 20) (5) Kombination: Level (2); Level (3) um negative Faktoren und entsprechende Divisionen erweitert (6) Kombination: Level (2); Level (4) um negative Faktoren und entsprechende Divisionen erweitert""") level = int(input("Wähle dein Level: ")) print("Es werden 20 Aufgaben gestellt. Früheres Ende per Eingabe von 'q'.") aufgabenliste = [] if level == 1: aufgabenliste.append(Aufgabe("plus", range(-100, 101))) elif level == 2: aufgabenliste.append(Aufgabe("plus", range(-100, 101))) aufgabenliste.append(Aufgabe("minus", range(-100, 101))) elif level == 3: aufgabenliste.append(Aufgabe("mal", range(0, 11))) elif level == 4: aufgabenliste.append(Aufgabe("mal", range(0, 21))) elif level == 5: aufgabenliste.append(Aufgabe("plus", range(-100, 101))) aufgabenliste.append(Aufgabe("minus", range(-100, 101))) aufgabenliste.append(Aufgabe("mal", range(-10, 11))) aufgabenliste.append(Aufgabe("geteilt durch", range(-10, 11))) elif level == 6: aufgabenliste.append(Aufgabe("plus", range(-100, 101))) aufgabenliste.append(Aufgabe("minus", range(-100, 101))) aufgabenliste.append(Aufgabe("mal", range(-20, 21))) aufgabenliste.append(Aufgabe("geteilt durch", range(-20, 21))) startzeit = time.time() while antwort != 'q' and fragenummer < 20: fragenummer += 1 aufgabe = random.choice(aufgabenliste) if aufgabe.anweisung == "geteilt durch": while True: b = random.choice(aufgabe.bereich) if b != 0: break a = b * random.choice(aufgabe.bereich) else: a = random.choice(aufgabe.bereich) b = random.choice(aufgabe.bereich) ergebnis = rechenart[aufgabe.anweisung](a, b) antwort = input(f"Frage {fragenummer}: Berechne {a} " + aufgabe.anweisung + f" {b}: ") if antwort != 'q': if int(antwort) == ergebnis: print("Korrekt!") richtige += 1 else: print(f"Richtig wäre {ergebnis} gewesen.") falsche +=1 endzeit = time.time() dauer = endzeit - startzeit if antwort == 'q': fragenummer -= 1 if fragenummer > 0: print(f""" {fragenummer} Aufgaben bearbeitet, {richtige} richtige Antwort(en), {falsche} falsche Antwort(en) Gesamtzeit: {dauer:.2f} Sekunden Anteil richtiger Antworten: {richtige / fragenummer * 100:.2f} Prozent Durchschnittliche Zeit pro Aufgabe: {dauer / fragenummer:.2f} Sekunden """) if fragenummer == 20: print(f"Punktzahl (je niedriger desto besser): {dauer / fragenummer + falsche * 5:.2f}")