Phần mềm cho cuộc đua thử nghiệm thời gian


11

Tôi đang tìm kiếm một phần mềm để thực hiện cuộc đua thử thời gian tại địa phương. Sẽ có khoảng 50 tay đua: đủ lớn để thực hiện công việc chuẩn bị kết quả cuộc đua với bút và giấy trần khá khó khăn và tốn thời gian, nhưng quá nhỏ để sử dụng các hệ thống chip đua đầy đủ.

Các tay đua sẽ bắt đầu với khoảng thời gian một phút và trên vạch đích sẽ có một người đàn ông thông báo thời gian cho người điều khiển. Vì vậy, nhà điều hành sẽ chỉ cần nhập thời gian của người lái vào chương trình. Chương trình sẽ có thể tạo ra bảng kết quả khi đang bay khi các tay đua băng qua đường.

Tôi hiểu rằng việc tạo ra loại phần mềm này không khó lắm, nhưng tôi chỉ hy vọng có những giải pháp phần mềm miễn phí có sẵn mà tôi có thể sử dụng cho sự kiện của mình. Xin vui lòng cho tôi biết nếu bạn đã từng nghe về bất kỳ.


Trong 1 giờ, tôi sẽ tạo một con trăn :)
Tim

Vâng, đúng, tôi biết việc tự viết nó tương đối dễ dàng. Nhưng khi tôi bắt đầu nghĩ về tất cả các tính năng hữu ích tôi muốn có, như chỉnh sửa bảng có kết quả (tự động di chuyển các mục nếu cần), tạo đầu ra thân thiện với máy in, xuất ra excel, lọc kết quả theo loại xe đạp (xe đạp đường trường so với aero) hoặc nhóm tuổi, v.v ... Tôi nhận ra rằng có thể dễ dàng hơn để đầu tư vào việc thay thế :-)
krakovjak

4
Tại sao không chỉ sử dụng bảng tính?
200_success

1
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì phần mềm về đi xe đạp không có chủ đề. Vui lòng hỏi trên softwarerecs.stackexchange.com và sử dụng thẻ để đi xe đạp.
Criggie

Câu trả lời:


7

Điều này sẽ chạy trong python (chỉ 3.X, không phải 2.7), miễn phí để cài đặt ngôn ngữ lập trình. Đơn giản chỉ cần tiết kiệm sau đây như một tập tin kết thúc .py- ví dụ timetrials.py. Sau đó mở IDLE3 (menu bắt đầu) và mở tệp ( Ctrl+ O). Cuối cùng, nhấn F5để bắt đầu nó.

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

Khi mọi người đã hoàn thành, nó sẽ trông giống như thế này:

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

3
Tất cả đều tốt và tốt, nhưng mua một gói thương mại ít nhất mang lại cho bạn một ai đó để rên rỉ khi bạn tìm thấy một lỗi.
PeteH

3
Hãy rên rỉ với tôi ở đây, tôi đủ buồn để luôn ở bên SE!
Tim

2
Nỗ lực tốt đẹp! Mặc dù vậy, bạn nên xem xét việc chạy codereview.stackexchange.com trước đây - bạn không hoàn toàn tuân thủ hướng dẫn về kiểu dáng và có rất nhiều sự lặp lại (ví dụ: xem xét thêm chức năng def get_int_input(prompt, min_=None, max_=None):). Ngoài ra, strftimesẽ giúp bạn tiết kiệm một số công việc.
jonrsharpe

@jon chỉ làm điều đó ngay bây giờ ... Thật khó khăn vì các biến thể ... 15 phút;)
Tim

@jon Thực tế, 13 phút sau ... chỉnh sửa ;-)
Tim

3

Một tùy chọn là RaceSplitter . Đây là một ứng dụng iOS, có giá 35 đô la. Bạn sẽ cần một iPad, iPhone hoặc iPod Touch phù hợp để chạy nó.

Bạn có thể nhập một danh sách bắt đầu trước. Sau đó, trong cuộc đua, bạn chỉ cần nhập số người lái khi họ vượt qua vạch đích, và nó sẽ ghi lại thời gian của họ. Sau đó, bạn có thể xuất bản kết quả trên trang web và xuất sang Excel, v.v.

Tôi đã không thử điều này bản thân mình, nhưng tôi đã thấy nó được sử dụng tại một vài cuộc đua địa phương. Nó dường như hoạt động tốt cho thời gian, và họ đã có kết quả trực tuyến ngay sau cuộc đua.


Điều này trông giống như chính xác những gì tôi cần! Cảm ơn bạn!
krakovjak

1

Chúng tôi đã sử dụng một ứng dụng cho điện thoại Android được tạo bởi Liuto. Thật tuyệt vời, dễ học / sử dụng và giá rẻ - chỉ $ 1,11. Về cơ bản, khi mỗi người lái đi bằng số bắt đầu, bạn chạm vào số tương ứng của họ trên tờ khai của họ và việc tính toán thời gian của họ so với thời gian trôi qua tổng thể đã hoàn tất. Chộp lấy!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.