मैंने एक while True: लूप का उपयोग किया है try और except स्टेटमेंट के साथ एक प्रोग्राम को एरर चेक करने के लिए जो मैंने अपने यूनिवर्सिटी असाइनमेंट के लिए दिया है। अपना ग्रेड प्राप्त करने पर, मुझे True लूप का उपयोग करने के लिए चिह्नित किया गया है, क्योंकि वे स्पष्ट रूप से 'निषिद्ध' हैं और पायथन प्रोग्रामिंग में अक्षम हैं।

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

question = input('How old are you? ')
while True: 
    try: 
        question = int(question)
        break
    except ValueError:
        question = input('Please enter an integer: ')

यह उल्लेखनीय है कि मुझे विशेष रूप से नीचे चिह्नित किया गया था क्योंकि मैंने एक पूर्णांक इनपुट की जांच के लिए while True को शामिल करते हुए इस पद्धति का उपयोग किया था।

यह मुझे आश्चर्यचकित करता है; ऐसा करने का सही तरीका क्या है? मेरे मार्कर की प्रतिक्रिया ने मुझे यह सोचने पर मजबूर कर दिया कि मैंने जो किया है वह त्रुटि जाँच का कुछ आदिम तरीका है, लेकिन मुझे इससे अधिक अग्रिम कुछ भी नहीं मिला।

अगर कोई यह सुनिश्चित करने के लिए 'उचित और सही तरीका' जानता है कि एक इनपुट एक पूर्णांक है, तो while True के उपयोग को छोड़कर, मैं इसकी बहुत सराहना करता हूं!

0
Kiko 16 मई 2019, 04:55

1 उत्तर

सबसे बढ़िया उत्तर

इस विशिष्ट मामले में, आप try-except को छोड़ सकते हैं:

question = input('Please enter an integer.')
while not question.isdigit():
    question = input(f'{question} is not an integer. Please enter an integer.')

question = int(question)

उस ने कहा, मैं कहूंगा कि आपके कोड में कुछ भी गलत नहीं है, और यह वास्तव में इस समाधान की तुलना में इस स्थिति के लिए मुहावरेदार है।

साथ ही, यह आपके समाधान से करता है कि यह उपयोगकर्ता इनपुट के लिए जांच करता है जिसे पूरी तरह से एक पूर्णांक में परिवर्तित किया जा सकता है, जबकि आपका स्वीकार करता है, उदाहरण के लिए, तैरता है।

1
gmds 16 मई 2019, 02:00