Durschnittszeiten mit arrays in python berechnen?
Ich programmiere aktuell einen 1x1 Trainer um Programmieren zu üben/ lernen. Aktuell wird nach eingeben der Aufgabe, die Aufgabe überprüft und Richtig oder Falsch angezeigt. Darunter die benötigte Zeit für die Aufgabe.
Jetzt will ich aber statt der benötigten Zeit pro Aufgabe die Durchschnittszeit pro Aufgabe angezeigt bekommen (Am besten mit Speichern von Daten in Arrays).
Kann mir da jemand helfen?
Hier der aktuelle Code:
from random import randint
import tkinter as tk
import time
status = False
def buttonLos_clicked(event):
global status
if status == False:
status = True
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
antwort = int(textbox.get())
if antwort == produkt:
zeitende = time.time()
labelAnswer["text"] = "Richtig"
labelTime["text"] = round(zeitende - zeitanfang, 2)
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()
Sorry für die Formatierung, muss was beim kopieren falsch geleufen sein.
1 Antwort
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.