计时赛软件


11

我正在寻找一款进行本地计时赛的软件。大约有50名车手:足够大,可以用笔和纸来准备比赛成绩的工作相当困难且耗时,但是太小而无法使用成熟的比赛筹码系统。

车手将以一分钟的间隔开始,在终点线上会有一个人向操作员宣布时间。因此,操作员只需将车手的时间输入到程序中即可。当骑手越线时,该程序应能够即时生成结果表。

我知道创建这种软件并不难,但是我只是希望有可以随时用于活动的免费软件解决方案。如果您有听说过,请告诉我。


在1小时内,我将在python中制作一个:)
蒂姆(Tim)

是的,对,我知道自己编写相对容易。但是,当我开始考虑要拥有的所有有用功能时,例如编辑带有结果的表(如果需要,可自动移动条目),创建打印机友好的输出,导出为ex​​cel,根据例如自行车的类型过滤结果(公路自行车vs航空)或年龄段等,我意识到投资于谷歌搜索可能更容易:-)
krakovjak 2014年

4
为什么不只使用电子表格?
200_success 2014年

1
我投票结束这个问题是不合时宜的,因为有关骑自行车的软件是不合时宜的。请在softwarerecs.stackexchange.com上询问并使用该标签进行循环。
Criggie

Answers:


7

这将在可免费安装的编程语言python(仅3.X,而不是2.7)中运行。只需将以下内容另存为文件结尾.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 2014年

3
请随时在这里抱怨我,我很难过,总是呆在SE上!
蒂姆(Tim)

2
努力!不过,您应该考虑运行过去的codereview.stackexchange.com-您并不完全符合样式指南,并且重复很多(例如,考虑添加一个函数def get_int_input(prompt, min_=None, max_=None):)。另外,strftime将为您节省一些工作。
jonrsharpe 2014年

@jon现在就这样做了...由于变化而变得棘手... 15分钟;)
Tim

@jon实际上,在13分钟后...编辑;-)
蒂姆(Tim)

3

一种选择是RaceSplitter。这是一个iOS应用,价格为35美元。您将需要合适的iPad,iPhone或iPod Touch才能运行它。

您可以提前输入开始列表。然后,在比赛期间,您只需输入运动员编号(越过终点线),它就会记录他们的时间。然后,您可以将结果发布在网站上,并导出到Excel等。

我自己还没有尝试过,但是我已经在一些地方比赛中看到了它的使用。计时似乎很好,比赛后不久他们就将结果在线了。


看起来正是我所需要的!谢谢!
krakovjak 2014年

1

我们使用了Liuto生产的Android手机应用程序。它很棒,易于学习/使用且便宜-仅1.11美元。基本上,当每个骑手按出发编号出发时,您可以在返回时点按其相应的编号,从而完成了其时间与总经过时间的计算。快点!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.