#!/usr/bin/env python3 import time import random import os VERSION = "This is reflexio-advanced v1.0" DATA_FILENAME = "messwerte.txt" DATA_DIR = "data" def main(): print(VERSION) # --- Beginn get_file() --- base_dir = os.path.dirname(__file__) data_path = os.path.join(base_dir, DATA_DIR) os.makedirs(data_path, exist_ok=True) file_path = os.path.join(data_path, DATA_FILENAME) # --- Ende get_file() --- while True: # --- Beginn show_menu() --- print("\n---------------------------------------------------------") print("m - Messen") print("s - Statistik anzeigen") print("r - Reset") print("h - Hilfe") print("x - Beenden") print("---------------------------------------------------------") # --- Ende show_menu() --- choice = input("Eingabe: ").strip().lower() # ===================================================== # MESSEN # ===================================================== if choice == "m": # --- Beginn start_measurement() --- print("\nDrücke 'ENTER', um die Messung zu starten.") input() print("Status: Warte auf das Signal...\n") time.sleep(random.uniform(2, 6)) print("JETZT!") start = time.perf_counter() input() end = time.perf_counter() reaction_time = end - start # --- Ende start_measurement() --- print("Status: Messung beendet") print(f"Reaktionszeit: {reaction_time:.3f} Sekunden") # --- Beginn save_value() --- with open(file_path, "a") as f: f.write(f"{reaction_time}\n") # --- Ende save_value() --- # --- Beginn load_values() --- if os.path.exists(file_path): with open(file_path, "r") as f: values = [float(line.strip()) for line in f if line.strip()] else: values = [] # --- Ende load_values() --- # --- Beginn calculate_average() --- if values: avg = sum(values) / len(values) print(f"Anzahl Messwerte: {len(values)}") print(f"Durchschnitt: {avg:.3f} Sekunden") # --- Ende calculate_average() --- # ===================================================== # STATISTIK # ===================================================== elif choice == "s": # --- Beginn load_values() --- if os.path.exists(file_path): with open(file_path, "r") as f: values = [float(line.strip()) for line in f if line.strip()] else: values = [] # --- Ende load_values() --- if not values: print("Es sind noch keine Messwerte vorhanden.") else: # --- Beginn calculate_average() --- avg = sum(values) / len(values) print(f"Anzahl Messwerte: {len(values)}") print(f"Durchschnitt: {avg:.3f} Sekunden") # --- Ende calculate_average() --- # ===================================================== # RESET # ===================================================== elif choice == "r": # --- Beginn reset_data() --- if os.path.exists(file_path): os.remove(file_path) print("Alle Messwerte wurden gelöscht.") else: print("Es sind keine gespeicherten Messwerte vorhanden.") # --- Ende reset_data() --- # ===================================================== # HILFE # ===================================================== elif choice == "h": # --- Beginn show_help() --- print("\n====================== ANLEITUNG ======================") print("(1) Wähle 'm', um eine Messung zu starten.") print("(2) Drücke 'ENTER', um die Messung zu beginnen.") print("(3) Warte, bis die Meldung 'JETZT!' erscheint.") print("(4) Drücke sofort 'ENTER', um zu stoppen.") print("") print("s - Statistik anzeigen") print("r - Messwerte zurücksetzen") print("h - Diese Hilfe anzeigen") print("x - Programm beenden") print("=========================================================") # --- Ende show_help() --- # ===================================================== # BEENDEN # ===================================================== elif choice == "x": print("\nProgramm beendet.") break else: print("Ungültige Eingabe. Mit 'h' Hilfe anzeigen.") if __name__ == "__main__": main()