समय परीक्षण दौड़ के लिए सॉफ्टवेयर


11

मैं एक स्थानीय समय-परीक्षण दौड़ आयोजित करने के लिए सॉफ्टवेयर के एक टुकड़े की तलाश में हूं। कुछ 50 सवार होंगे: नंगे पेन और पेपर के साथ दौड़ के परिणाम तैयार करने का काम करने के लिए पर्याप्त रूप से कठिन और समय लेने वाली, लेकिन पूर्ण-भाग दौड़ वाले चिप्स सिस्टम का उपयोग करने के लिए बहुत छोटा।

राइडर्स एक मिनट के अंतराल से शुरू करने जा रहे हैं और फिनिशिंग लाइन पर ऑपरेटर को समय की घोषणा करने वाला एक आदमी होगा। इसलिए ऑपरेटर को प्रोग्राम में राइडर के समय में प्रवेश करना होगा। सवार को लाइन पार करने के लिए कार्यक्रम को मक्खी पर परिणामों की तालिका का उत्पादन करने में सक्षम होना चाहिए।

मैं समझता हूं कि इस तरह का सॉफ्टवेयर बनाना इतना कठिन नहीं है, लेकिन मैं बस उम्मीद कर रहा था कि आसानी से उपलब्ध फ्रीवेयर समाधान हैं जो मैं अपने ईवेंट के लिए उपयोग कर सकता हूं। कृपया मुझे बताएं कि क्या आपने कभी किसी के बारे में सुना है।


1 घंटे में, मैंने अजगर में एक बना दिया है :)
टिम

हाँ, सही है, मुझे पता है कि इसे लिखना बहुत आसान है। लेकिन जब मैं उन सभी उपयोगी विशेषताओं के बारे में सोचना शुरू करता हूं, जो मैं करना चाहता हूं, जैसे कि परिणाम के साथ संपादन तालिका (स्वचालित रूप से प्रविष्टियों को जरूरत पड़ने पर), प्रिंटर के अनुकूल आउटपुट बनाना, एक्सेल को निर्यात करना, परिणामों के अनुसार फ़िल्टर करना, जैसे कि साइकिल का प्रकार (सड़क-बाइक बनाम एयरो) या आयु वर्ग, आदि मुझे पता है कि इसके बजाय
गुगली

4
सिर्फ स्प्रेडशीट का उपयोग क्यों न करें?
200_success

1
मैं इस प्रश्न को ऑफ़-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूँ क्योंकि साइक्लिंग के बारे में सॉफ़्टवेयर ऑफ़ टॉपिक है। कृपया softwarerecs.stackexchange.com पर पूछें और साइकिल चलाने के लिए टैग का उपयोग करें।
Criggie

जवाबों:


7

यह प्रोग्रामिंग भाषा को स्थापित करने के लिए एक नि: शुल्क अजगर (केवल 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
सभी अच्छी तरह से और अच्छे हैं, लेकिन कम से कम एक वाणिज्यिक पैकेज खरीदने से आपको किसी को बग मिलने पर विलाप करने की अनुमति मिलती है।
पीटीएच

3
यहाँ मुझ पर विलाप करने के लिए स्वतंत्र महसूस करो, मैं हमेशा एसई पर रहने के लिए काफी दुखी हूं!
टिम

2
अच्छा प्रयास! आप इस अतीत चल रहा पर विचार करना चाहिए codereview.stackexchange.com , हालांकि - आप पूरी तरह से पालन नहीं कर रहे हैं शैली गाइड और वहाँ पुनरावृत्ति का एक बहुत कुछ है (उदाहरण के लिए एक समारोह जोड़ने पर विचार करें def get_int_input(prompt, min_=None, max_=None):)। इसके अलावा, strftimeआप कुछ काम बचा सकते हैं।
जोंशरशिप

@ जों अब बस कर ... विविधताओं के कारण यह मुश्किल है ... 15 मिनट;)
टिम

@ जों वास्तव में, 13 मिनट बाद ... संपादन ;-)
टिम

3

एक विकल्प रेसप्लेटर है । यह एक iOS ऐप है, जिसकी कीमत $ 35 है। इसे चलाने के लिए आपको एक उपयुक्त iPad, iPhone या iPod Touch की आवश्यकता होगी।

आप पहले से एक सूची शुरू कर सकते हैं। फिर दौड़ के दौरान, आपको बस सवार संख्या दर्ज करनी होगी क्योंकि वे फिनिश लाइन को पार करते हैं, और यह उनका समय रिकॉर्ड करेगा। फिर आप वेबसाइट पर परिणाम प्रकाशित कर सकते हैं और एक्सेल आदि को निर्यात कर सकते हैं।

मैंने खुद यह कोशिश नहीं की है, लेकिन मैंने इसे कुछ स्थानीय दौड़ में उपयोग में देखा है। यह समय के लिए ठीक काम करने के लिए लगता है, और वे दौड़ के तुरंत बाद ऑनलाइन परिणाम प्राप्त कर चुके हैं।


यह वैसा ही दिखता है जैसा मुझे चाहिए! धन्यवाद!
क्राकोवजक

1

हमने Liuto द्वारा बनाए गए एंड्रॉइड फोन के लिए एक ऐप का उपयोग किया है। यह बहुत अच्छा था, सीखना आसान / उपयोग और सस्ता - $ 1.11। मूल रूप से, जब प्रत्येक राइडर स्टार्ट नंबर से चला जाता है, तो आप उनकी वापसी पर उनकी संबंधित संख्या पर टैप करते हैं और उनके समय बनाम समग्र बीते हुए समय की गणना पूरी हो जाती है। भगवान!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.