सरल गणितीय शब्द-समस्याओं को पार्स कीजिए, उनका मूल्यांकन कीजिए और उत्तर पूर्णांक के रूप में लौटाइए।
जिन समस्याओं में कोई संक्रिया नहीं होती, उनका परिणाम बस दी गई संख्या ही होता है।
What is 5?
इसका परिणाम 5 होता है।
दो संख्याओं को जोड़िए।
What is 5 plus 13?
इसका परिणाम 18 होता है।
बड़ी संख्याओं और ऋणात्मक संख्याओं को भी संभालिए।
अब बाकी तीन संक्रियाएँ भी कीजिए।
What is 7 minus 5?
2
What is 6 multiplied by 4?
24
What is 25 divided by 5?
5
कई संक्रियाओं को एक के बाद एक क्रम में संभालिए।
चूँकि ये शब्दों में लिखी शब्द-समस्याएँ हैं, इसलिए एक्सप्रेशन का मूल्यांकन बाएँ से दाएँ कीजिए। संक्रियाओं के सामान्य क्रम पर ध्यान न दीजिए।
What is 5 plus 13 plus 6?
24
What is 3 plus 2 multiplied by 3?
15 (यानी 9 नहीं)
पार्सर को इन्हें अस्वीकार करना चाहिए:
कभी-कभी किसी एक्सेप्शन को उठाना ज़रूरी होता है। ऐसा करते समय आपको हमेशा एक अर्थपूर्ण एरर संदेश शामिल करना चाहिए, जो बताए कि एरर का स्रोत क्या है। इससे आपका कोड और पढ़ने योग्य बनता है और डीबगिंग में काफी मदद मिलती है। जिन स्थितियों में आपको पता है कि एरर का स्रोत किसी खास टाइप का ही होगा, वहाँ आप बिल्ट-इन एरर टाइप में से कोई एक उठाना चुन सकते हैं, लेकिन तब भी एक अर्थपूर्ण संदेश ज़रूर शामिल कीजिए।
इस अभ्यास में आपको raise स्टेटमेंट का इस्तेमाल करके ValueError "फेंकना" होता है, अगर answer() को दिया गया प्रश्न गलत या अमान्य है, या उसमें कोई अज्ञात ऑपरेशन है। टेस्ट तभी पास होंगे जब आप exception को raise करें और उसके साथ एक संदेश भी दें।
ध्यान दीजिए: हर परिस्थिति के लिए ज़रूरी संदेश अलग होता है, भले ही एक ही एरर टाइप उठाया जा रहा हो।
टेस्ट ध्यान से देखिए।
संदेश के साथ ValueError उठाने के लिए, संदेश को exception टाइप के आर्गुमेंट के रूप में लिखिए:
# if the question contains an unknown operation.
raise ValueError("unknown operation")
# if the question is malformed or invalid.
raise ValueError("syntax error")
किसी खास कोड ब्लॉक में उठाई गई एरर को संभालने के लिए try-except इस्तेमाल किया जा सकता है।
try-except ब्लॉक उस कोड को "लपेट" लेते हैं जिससे संभवतः कोई एरर हो सकती है, और हर एक्सेप्शन के लिए तय कर देते हैं कि उसे एक एरर, कई एरर, या समस्या से निपटने वाला कोई दूसरा कोड कैसे संभालेगा:
while len(equation) > 1:
try:
# The questionable/error-prone code goes here,in an indented block
# It can contain statements, loops, if-else blocks, or other executable code.
x_value, operation, y_value, *rest = equation
...
...
except:
# Code for what to do when an error gets thrown in the code above.
# This could be one error, or more complicated logging, error checking and messaging.
raise ValueError("syntax error")
Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।