타임 트라이얼 레이스 용 소프트웨어


11

현지 시련을 벌일 소프트웨어를 찾고 있습니다. 약 50 명의 라이더가있을 것입니다. 베어 펜과 종이로 레이스 결과를 준비하는 작업을 어렵고 시간이 많이 걸리지 만 본격적인 레이스 칩 시스템을 사용하기에는 너무 작습니다.

라이더는 1 분 간격으로 시작하고 마무리 라인에는 작업자에게 시간을 알리는 사람이 있습니다. 따라서 운전자는 운전자의 시간을 프로그램에 입력하기 만하면됩니다. 이 프로그램은 선수들이 선을 넘어갈 때 즉시 결과 테이블을 생성 할 수 있어야합니다.

나는 이런 종류의 소프트웨어를 만드는 것이 그렇게 어렵지는 않다는 것을 이해하지만, 이벤트에 사용할 수있는 프리웨어 솔루션을 쉽게 구할 수 있기를 바랐습니다. 들어 본 적이 있으면 알려주세요.


1 시간 안에, 나는 파이썬에서 하나를 만들 것입니다 :)
Tim

네, 글을 쓰는 것이 상대적으로 쉽다는 것을 알고 있습니다. 그러나 결과가있는 테이블 편집 (필요한 경우 자동으로 항목 이동), 프린터 친화적 인 출력 생성, Excel로 내보내기, 자전거 유형에 따라 결과 필터링과 같은 유용한 기능에 대해 생각하기 시작하면 (로드 바이크 대 에어로) 또는 연령 그룹 등 내가 대신 인터넷 검색에 투자하는 것이 더 쉽다는 것을 알고 있습니다 :-)
krakovjak

4
왜 스프레드 시트를 사용하지 않습니까?
200_success

1
사이클링에 대한 소프트웨어가 주제가 아니기 때문에이 질문을 주 제외로 닫으려고합니다. softwarerecs.stackexchange.com에 문의 하여 태그를 사용하십시오.
Criggie

답변:


7

이것은 프로그래밍 언어를 무료로 설치하는 파이썬 (2.7이 아닌 3.X 만)에서 실행됩니다. 다음을 파일 끝으로 저장하면됩니다 . .py예 : timetrials.py그런 다음 IDLE3 (시작 메뉴)을 열고 파일 ( Ctrl+ O) 을여십시오 . 마지막으로을 눌러 F5시작합니다.

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()

모든 사람이 끝나면 다음과 같이 보일 것입니다.

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

3
모든 것이 좋고 좋지만 적어도 상용 패키지를 구입하면 버그를 발견했을 때 누군가에게 신음 할 수 있습니다.
PeteH

3
나에게 신음하지 말고 항상 SE에있을만큼 슬프다!
Tim

2
좋은 노력! 이 과거 codereview.stackexchange.com을 실행하는 것을 고려해야 하지만 스타일 가이드를 완전히 준수하지 않으며 많은 반복이 있습니다 (예 : 함수 추가 고려 def get_int_input(prompt, min_=None, max_=None):). 또한 strftime약간의 작업을 절약 할 수 있습니다.
jonrsharpe

@jon 지금 그 일을하고 있습니다 ... 변화 때문에 까다 롭습니다 ... 15 분;)
Tim

@jon 사실 13 분 후 ... 편집 ;-)
Tim

3

하나의 옵션은 RaceSplitter 입니다. 이것은 iOS 앱으로 35 달러입니다. 실행하려면 적합한 iPad, iPhone 또는 iPod Touch가 필요합니다.

시작 목록을 미리 입력 할 수 있습니다. 그런 다음 레이스 도중 결승선을 통과 할 때 라이더 번호를 입력하면 시간이 기록됩니다. 그런 다음 웹 사이트에 결과를 게시하고 Excel 등으로 내보낼 수 있습니다.

나는 이것을 직접 시도하지는 않았지만 몇몇 지역 인종에서 사용되는 것을 보았습니다. 타이밍에 잘 작동하는 것 같으며 레이스 직후에 온라인에서 결과를 얻었습니다.


이것은 내가 필요한 것과 정확히 같습니다! 감사합니다!
krakovjak

1

우리는 Liuto가 만든 안드로이드 폰용 앱을 사용했습니다. 훌륭하고 배우기 쉽고 사용하기 쉽고 저렴합니다. 단 $ 1.11입니다. 기본적으로, 각 선수가 시작 번호로 이륙하면 귀국시 해당 번호를 탭하면 시간 대 전체 경과 시간 계산이 완료됩니다. 스냅!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.