Software für Zeitfahrrennen


11

Ich suche nach einer Software, um ein lokales Zeitfahrrennen durchzuführen. Es wird ungefähr 50 Fahrer geben: groß genug, um die Vorbereitung der Rennergebnisse mit bloßem Stift und Papier ziemlich schwierig und zeitaufwändig zu machen, aber zu klein, um vollwertige Rennchipsysteme zu verwenden.

Die Fahrer beginnen mit einem Minutenintervall und auf der Ziellinie wird ein Mann dem Fahrer die Zeit mitteilen. Der Bediener muss also nur die Zeit des Fahrers für das Programm eingeben. Das Programm sollte in der Lage sein, die Ergebnistabelle im laufenden Betrieb zu erstellen, wenn die Fahrer die Linie überqueren.

Ich verstehe, dass das Erstellen dieser Art von Software nicht so schwierig ist, aber ich hatte nur gehofft, dass es leicht verfügbare Freeware-Lösungen gibt, die ich für meine Veranstaltung verwenden kann. Bitte lassen Sie mich wissen, wenn Sie jemals davon gehört haben.


In 1 Stunde habe ich eine in Python gemacht :)
Tim

Ja, richtig, ich weiß, dass es relativ einfach ist, es selbst zu schreiben. Aber wenn ich anfange, über alle nützlichen Funktionen nachzudenken, die ich dort haben möchte, wie das Bearbeiten von Tabellen mit Ergebnissen (automatische Verschiebung von Einträgen bei Bedarf), Erstellen einer druckerfreundlichen Ausgabe, Exportieren in Excel, Filtern von Ergebnissen nach beispielsweise dem Fahrradtyp (Rennrad gegen Aero) oder Altersgruppen usw. Mir ist klar, dass es möglicherweise einfacher ist, stattdessen in
Googeln

4
Warum nicht einfach eine Tabelle verwenden?
200_erfolg

1
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da Software zum Thema Radfahren nicht zum Thema gehört. Bitte fragen Sie auf softwarerecs.stackexchange.com und verwenden Sie das Tag zum Radfahren.
Criggie

Antworten:


7

Dies läuft in Python (nur 3.X, nicht 2.7), einer frei zu installierenden Programmiersprache. Speichern Sie einfach Folgendes als Dateiende .py- z timetrials.py. Öffnen Sie dann IDLE3 (Startmenü) und öffnen Sie die Datei ( Ctrl+ O). Drücken Sie F5zum Schluss, um es zu starten.

import datetime
from operator import itemgetter

def get_int_input(prompt, min_=0, max_=None):
    """Get a valid integer input."""
    while True:
        try:
            i = int(input(prompt))
        except ValueError:
            print("Please enter an integer.")
        else:
            if min_ is not None and i < min_:
                print("Must be at least {0}.".format(min_))
                continue
            elif max_ is not None and i > max_:
                print("Must be at most {0}.".format(max_))
                continue
            return i

def get_time():
    """"Get a time input as a datetime.time object."""
    h = get_int_input("Hours (0-23): ", max_=23)
    m = get_int_input("Minutes (0-59): ", max_=59)
    s = get_int_input("Seconds (0-59): ", max_=59)
    ms = get_int_input("Milliseconds (0-999): ", max_=999)
    return datetime.time(h, m, s, ms*1000)

def get_results(competitors):
    """Get a dict of finishing times for all competitors."""
    results = {}
    for _ in range(competitors):
        while True:
            competitor = get_int_input("Enter competitor number: ", min_=1, max_=competitors+1)
            if competitor not in results:
                results[competitor] = get_time()
                break
            print("Time already entered.")
        print_results(results)
    return results

def print_results(results):
    """Display the race results in a table, fastest first."""
    linet = '┌' + "─" * 12 + '┬' + '─' * 17 + '┐'
    linec = '├' + "─" * 12 + '┼' + '─' * 17 + '┤'
    lineb = '└' + "─" * 12 + '┴' + '─' * 17 + '┘'
    print(linet)
    print("│ Competitor │ Time (H:M:S)    │")
    for n, t in sorted(results.items(), key=itemgetter(1)):
        print(linec)
        print("│ {0:<10d} │ {1!s:<15} │".format(n, t))
    print(lineb)

def race():
    """Handle race times for a user-specified number of competitors."""
    n = get_int_input("Enter number of competitors (2-): ", min_=2)
    results = get_results(n)

if __name__ == "__main__":
    race()

Wenn alle fertig sind, sieht es ungefähr so ​​aus:

┌──────────────┬───────────────┐  
│  Con Num     │ Time H:M:S    │  
├──────────────┼───────────────┤  
│  1           │ 5:4:3.2       │  
├──────────────┼───────────────┤  
│  2           │ 8:7:6.5       │  
├──────────────┼───────────────┤  
│  3           │ 2:2:2.2       │  
└──────────────┴───────────────┘  

3
Alles schön und gut, aber wenn Sie ein kommerzielles Paket kaufen, können Sie zumindest stöhnen, wenn Sie einen Fehler finden.
PeteH

3
Fühlen Sie sich frei, mich hier anzustöhnen, ich bin traurig genug, immer auf SE zu sein!
Tim

2
Gute Mühe! Sie sollten sich überlegen diese Vergangenheit laufen codereview.stackexchange.com , obwohl - nicht ganz kompatibel mit dem sind Styleguide und es gibt eine Menge Wiederholung (zB prüfen , indem eine Funktion def get_int_input(prompt, min_=None, max_=None):). Außerdem strftimewürden Sie etwas Arbeit sparen.
Jonrsharpe

@ Jon macht das gerade jetzt ... Es ist schwierig wegen der Variationen ... 15 Minuten;)
Tim

@jon In der Tat, 13 Minuten später ... Bearbeitung ;-)
Tim

3

Eine Option ist RaceSplitter . Dies ist eine iOS-App, die 35 US-Dollar kostet. Sie benötigen ein geeignetes iPad, iPhone oder iPod Touch, um es auszuführen.

Sie können vorab eine Startliste eingeben. Während des Rennens müssen Sie nur noch die Fahrernummer eingeben, wenn sie die Ziellinie überqueren, und sie zeichnet ihre Zeit auf. Sie können die Ergebnisse dann auf der Website veröffentlichen und nach Excel usw. exportieren.

Ich habe das nicht selbst versucht, aber ich habe es bei einigen lokalen Rennen im Einsatz gesehen. Es scheint gut für das Timing zu funktionieren und sie haben die Ergebnisse kurz nach dem Rennen online.


Das sieht genau so aus, wie ich es brauche! Vielen Dank!
krakovjak

1

Wir haben eine App für Android-Handys von Liuto verwendet. Es war großartig, leicht zu erlernen / zu benutzen und billig - nur 1,11 $. Wenn jeder Fahrer nach Startnummer abfährt, tippen Sie bei seiner Rückkehr auf die entsprechende Nummer, und die Berechnung der Zeit im Verhältnis zur verstrichenen Gesamtzeit ist abgeschlossen. Schnapp!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.