Durschnittszeiten mit arrays in python berechnen?


16.03.2023, 08:50

Sorry für die Formatierung, muss was beim kopieren falsch geleufen sein.

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet
from random import randint
import tkinter as tk
import time

# Array für die Zeit pro Aufgabe
zeiten = []

def buttonLos_clicked(event):
   nextTask()

def nextTask():
   global a, b, produkt, zeitanfang
   textbox.delete(0,tk.END)
   zeitanfang = time.time()

   a = randint(1,10)
   b = randint(1,10)
   produkt = a * b
   showTask()

def showTask():
   global a, b
   labelTask["text"]="Wie viel ist " + str(a) + " x " + str(b) + "?"

def checkAufgabe(event):
   global produkt, zeitanfang, zeitende, zeiten

   antwort = int(textbox.get())

   if antwort == produkt:
       zeitende = time.time()
       labelAnswer["text"] = "Richtig"
       # Zeit zur Liste hinzufügen
       zeiten.append(round(zeitende - zeitanfang, 2))
       # Durchschnitt der Zeit pro Aufgabe berechnen
       durchschnittszeit = round(sum(zeiten)/len(zeiten), 2)
       # Text für die durchschnittliche Zeit pro Aufgabe
       durchschnitt_text = f"Durchschnittszeit: {durchschnittszeit}s"
       labelTime["text"] = durchschnitt_text
       nextTask()

   else:
       labelAnswer["text"] = "Leider falsch. Probiere es nochmal"
       textbox.delete(0,tk.END)
       showTask()

root = tk.Tk()
root.title("1x1-Trainer")

labelBody1 = tk.Label(root, text="Es werden dir zufällige Aufgaben gestellt.")
buttonLos = tk.Button(root, text="Los")
labelTask = tk.Label(root)
textbox = tk.Entry(root)
labelAnswer = tk.Label(root)
labelTime = tk.Label(root)

labelBody1.pack()
buttonLos.pack()
labelTask.pack()
textbox.pack()
labelAnswer.pack()
labelTime.pack()

buttonLos.bind("<Button-1>", buttonLos_clicked)
textbox.bind("<Return>", checkAufgabe)

root.mainloop()

Ich habe das Array "zeiten" am Anfang des Codes definiert und dann in der "checkAufgabe" Funktion die benötigte Zeit pro Aufgabe zur Liste hinzugefügt. Anschließend wird der Durchschnitt der Zeiten in der "checkAufgabe" Funktion berechnet und als Text für das "labelTime"-Label gesetzt.

Woher ich das weiß:Studium / Ausbildung – B.Sc., M.A., M.Sc. & Doktorand