Add-On: Rundenzeiten

Im Praktikum „Fadenpendel“ haben die Schülerinnen und Schüler die Messwerte mit Excel erfasst, aber die Zeit mit dem Smartphone gestoppt.

Wäre es nicht naheliegend, die Zeit auch mit Excel zu stoppen? Eine einfache Möglichkeit ist die Zeit mit in einem Python-Skript zu stoppen und direkt in die Exceltabelle zu schreiben.

Folgende Lösung hat ChatGPT vorgeschlagen:

import time
import pandas as pd

def save_lap_times(lap_times, lap_count):
    file = 'Messwerte.xlsx'
    sheet_name = 'Rundenzeiten'

    lap_times = [round(lt, 3) for lt in lap_times]
    data = {f'Rundenzeit {lap_count}': lap_times}
    lap_time_df = pd.DataFrame(data)

    try:
        existing_df = pd.read_excel(file, sheet_name=sheet_name)
        new_df = pd.concat([existing_df, lap_time_df], axis=1)
    except FileNotFoundError:
        new_df = lap_time_df

    new_df.to_excel(file, sheet_name=sheet_name, index=False)

print('Drücken Sie Enter, um die Stoppuhr zu starten. Geben Sie "n" ein und drücken Sie Enter, um eine neue Messung zu beginnen. Geben Sie "x" ein und drücken Sie Enter, um die Messung zu beenden und die Daten in Excel zu speichern.')

lap_count = 1

input('Wollen Sie die Messung starten (ja: Enter, nein: x)? ')
lap_times = []
start_time = time.time()
print('Rundenzeit gestartet.')

while True:
    user_input = input('Runde: Enter, Stopp: x : ')
    if user_input == '':
        lap_time = time.time() - start_time
        lap_times.append(lap_time)
        print(f'Rundenzeit gespeichert: {lap_time:.3f} Sekunden')
        start_time = time.time()
    elif user_input.lower() == 'n':
        lap_count += 1
        print('Neue Messung gestartet.')
        break
    elif user_input.lower() == 'x':
        print('Messung beendet. Daten werden in Excel gespeichert...')
        save_lap_times(lap_times, lap_count)
        break