Virtueller Triathlon

Problemstellung

Eine Krankenkasse führt einen virtuellen Triathlon durch. Bei diesem Wettbewerb können Nutzer:innen innerhalb es Monats August:

  • 400 m Schwimmen
  • 85 km Radfahren
  • 10 km Laufen

Eine App verbindet sich dazu mit den Apps der Sportuhren und prüft, ob eine Aktivität getrackt wurde, wird diese gefunden, werden die Aktivitäten zum Server der Krankenkasse auf folgende Art übermittelt:

<ID>,<Tag>,<Aktivität>,<Zeiten>

Zum Beispiel:

12,10,S,16:26:07.21

IDs sind Nutzernummern, die bei 0 anfangen und bis 225 gehen.

Der Tag entspricht dem Monatstag, die Aktivitätscodes sind Schwimmen, Radfahren, Laufen.

Die Zeiten werden in diesem Format angegeben:

<Stunde>:<Minute>:<Sekunde>.<Hundertstel>

Der Server hat alle Eingänge protokolliert. Leider kam es zu einer technischen Panne und das Auswertungsprogramm muss nochmals geschrieben werden.

Aufgabe

Schreiben Sie ein Programm, das

  1. für jede:n Nutzer:in zählt, wie viele Einzelaktivitäten protokolliert sind (aufgeschlüsselt nach Sportart).
  2. für jede:n Nutzer:in in jeder Sportart die Bestzeiten ermittelt.
  3. diese Bestzeiten zu einer Gesamtbestzeit aufsummiert, sofern Ergebnisse für alle drei Sportarten vorliegen.
  4. für jede Sportart die Nutzer-ID ermittelt, die gewonnen hat.
  5. die Nutzer-ID mit der besten in Punkt 3 ausgerechneten Gesamtzeit ermittelt.

Datensätze

Zur Programmentwicklung und Testen steht Ihnen die Datei virttria_small.txt mit 10 Teilnehmer:innen zur Verfügung, der eigentliche Datensatz ist in virttria_large.txt mit 225 Teilnehmer:innen.

Tipps

Daten laden

Dieses Skript lädt das Protokoll „virttria_small.txt“ in den Array protokoll, wobei jede Zeile in einem neuen Element des Arrays steht. Wenn Sie online-python benutzen, können Sie die Datei einfach öffnen und den Befehl wie unten verwenden. Achten Sie darauf, dass Sie die große Datei separat laden müssen.

protokoll = open("virttria_small.txt").readlines()

Daten in den Zeilen separieren

Zum Separieren der Daten eignet sich ein Blick auf die Struktur der Protokollzeilen: Welche Zeichen trennen die einzelnen Informationen? Benutzen Sie die split-Methode für Zeichenketten.

Zeiten vergleichen

Zum Vergleichen der Zeiten ist es am besten, sie in Sekunden umzurechnen, auch hier helfen einige Überlegungen:

  • Wodurch sind Stunden, Minuten und Sekunden getrennt?
  • Welche Struktur findet sich im Protokoll, wenn die Zeit unter einer Stunde liegt? Sehen Sie nach.
  • Welche Datentypen haben die Stunde, Minute und Sekundenangabe?