''' This file contains the TypingTutor class which provides real-time feedback on typing accuracy and speed. ''' import keyboard import time class TypingTutor: def __init__(self, progress_tracker): self.current_sentence = "" self.errors = 0 self.total_chars = 0 self.progress_tracker = progress_tracker self.start_time = 0 def start_tutor(self): print("Type the following sentence:") self.current_sentence = "The quick brown fox jumps over the lazy dog." print(self.current_sentence) self.start_time = time.time() keyboard.on_press(self.check_typing) def check_typing(self, key): if key.name == "enter": keyboard.unhook(self.check_typing) accuracy = self.calculate_accuracy() speed = self.calculate_speed() print(f"Accuracy: {accuracy}%") print(f"Speed: {speed} characters per minute") self.progress_tracker.record_performance(accuracy, speed) else: self.total_chars += 1 if key.name != self.current_sentence[self.total_chars - 1]: self.errors += 1 def calculate_accuracy(self): accuracy = ((self.total_chars - self.errors) / self.total_chars) * 100 return round(accuracy, 2) def calculate_speed(self): elapsed_time = time.time() - self.start_time speed = (self.total_chars / elapsed_time) * 60 return round(speed, 2)