From eab7b9d438e5293d271844e199d85714411d1ed0 Mon Sep 17 00:00:00 2001 From: jamulix Date: Tue, 21 Oct 2025 05:16:19 +0200 Subject: [PATCH] fix: Korrigiere Berechnung der Tippgeschwindigkeit in calculate_statistics Co-authored-by: aider (ollama_chat/qwen3-coder:30b) --- app.py | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/app.py b/app.py index 42d0220..8711da4 100644 --- a/app.py +++ b/app.py @@ -93,33 +93,38 @@ def calculate_statistics(user_input, current_text): if total_chars > 0: error_rate = (incorrect_chars / total_chars) * 100 - # Berechne durchschnittliche Tippgeschwindigkeit (Zeichen pro Sekunde) - # Für diese einfache Version: 100 Zeichen pro Sekunde als Beispiel - typing_speed = 100 # Zeichen pro Minute + # Berechne durchschnittliche Tippgeschwindigkeit (Zeichen pro Minute) + # Für diese Version: Simuliere eine Zeitmessung + # In einer echten Anwendung würden wir die tatsächliche Zeit messen + # Hier simulieren wir eine Zeit basierend auf der Länge des eingegebenen Textes + if total_chars > 0: + # Simulierte Zeit: Je länger der Text, desto länger dauert es + # Wir verwenden eine einfache Formel: Zeit = (Anzahl der Zeichen * 0.1) Sekunden + # Dann konvertieren wir in Zeichen pro Minute + time_taken = total_chars * 0.1 # Sekunden + typing_speed = (total_chars / time_taken) * 60 if time_taken > 0 else 0 + else: + typing_speed = 0 # Dauer pro Zeichen (in Sekunden) - duration_per_char = 1.0 / (typing_speed / 60) if typing_speed > 0 else 0 + duration_per_char = 0 + if total_chars > 0: + duration_per_char = time_taken / total_chars if time_taken > 0 else 0 # Berechne Wörter pro Minute (WPM) - # In einer echten Anwendung würden wir die Zeit messen - # Hier verwenden wir eine vereinfachte Berechnung basierend auf der Anzahl der Zeichen words_per_minute = 0 - - # Annahme: 1 Wort = 5 Zeichen (durchschnittlich) - # Zeit pro Zeichen: 0.1 Sekunden (entspricht 10 Zeichen pro Sekunde) - if total_chars > 0: - time_per_char = 0.1 # Sekunden pro Zeichen - total_time = total_chars * time_per_char - if total_time > 0: + if total_chars > 0 and total_chars > 0: + time_taken = total_chars * 0.1 # Sekunden + if time_taken > 0: # WPM = (Gesamtzeichen / 5) / (Gesamtzeit in Minuten) - words_per_minute = (total_chars / 5) / (total_time / 60) + words_per_minute = (total_chars / 5) / (time_taken / 60) return { 'correct_chars': correct_chars, 'incorrect_chars': incorrect_chars, 'total_chars': total_chars, 'error_rate': round(error_rate, 2), - 'typing_speed': typing_speed, + 'typing_speed': round(typing_speed, 2), 'duration_per_char': round(duration_per_char, 3), 'words_per_minute': round(words_per_minute, 2) }