Python मध्ये कंडिशनल if स्टेटमेंट. वाक्यरचना, इतर/एलिफ ब्लॉक्स, उदाहरणे

प्रोग्राम शिकण्याच्या प्रक्रियेत, वास्तविक जीवनात लागू करणे इतके सोपे नसलेले प्रोग्राम तयार करणे आवश्यक असते. तथापि, वेळोवेळी आपल्याला केवळ विशिष्ट परिस्थितीनुसार सूचनांचे पालन करावे लागेल. प्रोग्राममध्ये याची अंमलबजावणी करण्यास सक्षम होण्यासाठी, सर्व भाषांमध्ये नियंत्रण विधाने आहेत. त्यांच्या मदतीने, तुम्ही कोडच्या अंमलबजावणीचा प्रवाह नियंत्रित करू शकता, लूप तयार करू शकता किंवा विशिष्ट स्थिती सत्य असेल तेव्हाच काही क्रिया करू शकता.

आज आपण if स्टेटमेंटबद्दल बोलू, जे एका विशिष्ट स्थितीसाठी वर्तमान परिस्थिती तपासते आणि या माहितीच्या आधारे पुढील कृतींबद्दल निर्णय घेते.

नियंत्रण विधानांचे प्रकार

सर्वसाधारणपणे, जर प्रोग्रामचा प्रवाह नियंत्रित करणारे एकमेव विधान नाही. तसेच तो स्वतः ऑपरेटर्सच्या मोठ्या साखळीचा एक घटक असू शकतो.

त्याच्या अंमलबजावणीची प्रक्रिया नियंत्रित करणारे लूप आणि विधाने देखील आहेत. आज आम्ही फक्त सशर्त ऑपरेटर आणि ज्या साखळ्यांमध्ये सहभागी होऊ शकतो त्याबद्दल बोलू.

प्रोग्रामिंगमध्ये, ब्रँचिंग सारखी गोष्ट आहे. तंतोतंत याचा अर्थ असा आहे की आदेशांचा एक क्रम जो विशिष्ट स्थिती सत्य असल्यासच कार्यान्वित केला जातो. निकष स्वतः भिन्न असू शकतात:

  1. एका विशिष्ट मूल्यासाठी व्हेरिएबलची समानता.
  2. विशिष्ट क्रिया करणे.
  3. अनुप्रयोग स्थिती (संकुचित किंवा नाही).

स्पेक्ट्रम खूप मोठा असू शकतो. सशर्त विधाने अनेक प्रकारांमध्ये येतात:

  1. एका शाखेसह. म्हणजेच, एकच तपासणी केली जाते, परिणामी काही क्रिया केल्या जातात.
  2. दोन किंवा अधिक शाखांसह. जर निकष 1 सत्य असेल, तर निकष 2 तपासा. जर ते खरे असेल, तर 3 तपासा. आणि म्हणून, आवश्यक तितक्या तपासा.
  3. अनेक अटींसह. येथे सर्व काही सोपे आहे. दुभाषी अनेक अटी किंवा त्यापैकी एक तपासतो.

विधान असल्यास

if स्टेटमेंटची रचना सर्व भाषांमध्ये समान आहे. तथापि, पायथनमध्ये, त्याची वाक्यरचना इतर सर्वांपेक्षा थोडी वेगळी आहे:

स्थिती असल्यास:

    <входящее выражение 1>

    <входящее выражение 2>

<न входящее выражение>

प्रथम, ऑपरेटर स्वतः घोषित केला जातो, ज्यानंतर ते कार्य करण्यास प्रारंभ करते त्या स्थितीत लिहिले जाते. स्थिती खरी किंवा खोटी असू शकते.

यानंतर कमांडसह ब्लॉक येतो. जर ते ताबडतोब पूर्ण करण्याच्या निकषाचे पालन करत असेल, तर आदेशांच्या संबंधित क्रमाला इफ ब्लॉक म्हणतात. तुम्ही त्यात कितीही कमांड वापरू शकता.

लक्ष द्या! जर ब्लॉक आदेश समान आकाराचे असले पाहिजेत तर सर्व मधील इंडेंटेशन. ब्लॉक सीमा इंडेंट्सद्वारे निर्धारित केल्या जातात. 

भाषा दस्तऐवजीकरणानुसार, इंडेंटेशन 4 स्पेस आहे. 

हा ऑपरेटर कसा काम करतो? जेव्हा दुभाष्याला if शब्द दिसतो, तेव्हा तो ताबडतोब वापरकर्त्याने निर्दिष्ट केलेल्या निकषांविरुद्ध अभिव्यक्ती तपासतो. जर असे असेल तर तो सूचना शोधू लागतो आणि त्यांचे पालन करू लागतो. अन्यथा, या ब्लॉकमधील सर्व आदेश वगळले जातील.

जर कंडिशन नंतरचे विधान इंडेंट केलेले नसेल, तर ते इफ ब्लॉक म्हणून मानले जात नाही. आमच्या परिस्थितीत, ही ओळ आहे . म्हणून, चेकचा निकाल विचारात न घेता, ही ओळ कार्यान्वित केली जाईल.

हा ऑपरेटर कसा कार्य करतो याच्या उदाहरणासाठी येथे एक कोड स्निपेट आहे.

संख्या = इंट(इनपुट("एक संख्या प्रविष्ट करा:"))

जर संख्या > 10:

    प्रिंट ("संख्या 10 पेक्षा जास्त आहे")

हा प्रोग्राम वापरकर्त्याला नंबरसाठी प्रॉम्प्ट करतो आणि तो 10 पेक्षा जास्त आहे का ते तपासतो. तसे असल्यास, तो योग्य माहिती देतो. उदाहरणार्थ, जर वापरकर्त्याने 5 क्रमांक प्रविष्ट केला तर प्रोग्राम फक्त समाप्त होईल आणि तेच.

परंतु जर तुम्ही 100 क्रमांक निर्दिष्ट केलात, तर दुभाष्याला समजेल की ते दहापेक्षा जास्त आहे आणि ते कळवेल.

लक्ष द्या! आमच्या बाबतीत, अट चुकीची असल्यास, प्रोग्राम थांबतो, कारण निर्देशानंतर कोणतेही आदेश दिले जात नाहीत.

वरील कोडमध्ये फक्त एक कमांड आहे. परंतु त्यापैकी बरेच आहेत. फक्त आवश्यकता इंडेंट करणे आहे.

आता आज्ञांच्या या क्रमाचे विश्लेषण करू.

संख्या = इंट(इनपुट("संख्या लिहा:"))

जर संख्या > 10:

    प्रिंट ("पहिली ओळ")

    प्रिंट ("दुसरी ओळ")

    मुद्रित करा ("तिसरी ओळ")

मुद्रित करा (“प्रविष्ट केलेल्या संख्येकडे दुर्लक्ष करून, अंमलात आणलेली ओळ”)

प्रिंट ("एंड ऍप्लिकेशन")

2, 5, 10, 15, 50 मूल्ये प्रविष्ट केल्यास आउटपुट काय असेल याचा अंदाज लावण्याचा प्रयत्न करा.

तुम्ही बघू शकता, जर वापरकर्त्याने एंटर केलेली संख्या दहापेक्षा जास्त असेल, तर तीन ओळी आउटपुट होतील + एक मजकुरासह "प्रत्येक वेळी चालवा ..." आणि एक "एंड" आणि दहापेक्षा कमी असल्यास, फक्त एक, सह एक वेगळा मजकूर. सत्य असल्यास फक्त 3,4,5 ओळी अंमलात आणल्या जातील. तथापि, वापरकर्त्याने कोणती संख्या निर्दिष्ट केली तरीही शेवटच्या दोन ओळी लिहिल्या जातील.

आपण कन्सोलमध्ये थेट विधाने वापरल्यास, परिणाम भिन्न असेल. सत्यापन निकष निर्दिष्ट केल्यानंतर, एंटर दाबल्यास दुभाषी त्वरित मल्टी-लाइन मोड चालू करतो.

समजा आपण खालील कमांड्सचा क्रम लिहिला आहे.

>>>

>>> n = 100

>>> जर n > 10:

...

त्यानंतर, आपण पाहू की >>> ची जागा ellipsis ने केली आहे. याचा अर्थ मल्टीलाइन इनपुट मोड सक्षम आहे. सोप्या शब्दात, तुम्ही एंटर दाबल्यास, तुम्हाला निर्देशाच्या दुसऱ्या टप्प्याच्या इनपुटमध्ये हस्तांतरित केले जाईल. 

आणि या ब्लॉकमधून बाहेर पडण्यासाठी, तुम्हाला ब्लॉकमध्ये आणखी एक बांधकाम जोडण्याची आवश्यकता आहे if.

>>>

>>> n = 100

>>> जर n > 10:

… प्रिंट(«nv 10»)

...

अट सत्य नसल्यास, कार्यक्रम समाप्त होतो. ही एक समस्या आहे, कारण वापरकर्त्याला असा प्रोग्राम अयशस्वी झाल्यामुळे बंद झाल्याचे समजू शकते. त्यामुळे वापरकर्त्याला अभिप्राय देणे आवश्यक आहे. यासाठी, एक लिंक वापरली जाते if-other.

अभिव्यक्ती ऑपरेटर if-other

हा ऑपरेटर तुम्हाला लिंक अंमलात आणण्याची परवानगी देतो: जर अभिव्यक्ती विशिष्ट नियमाशी जुळत असेल तर, या क्रिया करा आणि नसल्यास, इतर. म्हणजेच, हे आपल्याला प्रोग्रामचा प्रवाह दोन रस्त्यांमध्ये विभाजित करण्यास अनुमती देते. वाक्यरचना अंतर्ज्ञानी आहे:

स्थिती असल्यास:

    # ब्लॉक असल्यास

    विधान 1

    विधान 2

    आणि याप्रमाणे

अन्यथा:

    # इतर ब्लॉक

    विधान 3

    विधान 4

    आणि असेच:

हे ऑपरेटर कसे कार्य करते ते समजावून घेऊ. प्रथम, मानक विधान थ्रेडमध्ये कार्यान्वित केले जाते यू, ते जुळते की नाही ते तपासत आहे अट "चूक किंवा बरोबर". पुढील क्रिया तपासणीच्या परिणामांवर अवलंबून असतात. सत्य असल्यास, अटी खालील निर्देशांच्या अनुक्रमात असलेली सूचना थेट अंमलात आणली जाते. यू, जर ते खोटे असेल तर आणखी

अशा प्रकारे आपण त्रुटी हाताळू शकता. उदाहरणार्थ, वापरकर्त्यास त्रिज्या प्रविष्ट करणे आवश्यक आहे. अर्थात, ती फक्त अधिक चिन्ह असलेली संख्या असू शकते किंवा ती शून्य मूल्य आहे. जर ते 0 पेक्षा कमी असेल, तर तुम्हाला एक सकारात्मक क्रमांक प्रविष्ट करण्यास सांगणारा संदेश जारी करणे आवश्यक आहे. 

या कार्याची अंमलबजावणी करणारा कोड येथे आहे. पण इथे एक चूक आहे. कोणते याचा अंदाज लावण्याचा प्रयत्न करा. 

त्रिज्या = इंट(इनपुट("एंटर त्रिज्या:"))

त्रिज्या >= 0 असल्यास:

    प्रिंट ("परिघ = ", 2 * 3.14 * त्रिज्या)

    प्रिंट ("क्षेत्र = ", 3.14 * त्रिज्या ** 2)

    अन्यथा:

        मुद्रित करा ("कृपया धन संख्या प्रविष्ट करा")

इंडेंटेशन विसंगत त्रुटी. जर आणि इतर त्यांच्याशिवाय किंवा त्यांच्या समान संख्येसह स्थित असणे आवश्यक आहे (ते घरटे आहेत की नाही यावर अवलंबून).

चला आणखी एक वापर केस देऊ (जेथे ऑपरेटर संरेखनासह सर्वकाही बरोबर असेल) - एक अनुप्रयोग घटक जो पासवर्ड तपासतो.

पासवर्ड = इनपुट ("पासवर्ड प्रविष्ट करा: ")

जर पासवर्ड == «sshh»:

    प्रिंट ("स्वागत")

अन्यथा:

    प्रिंट ("प्रवेश नाकारला")

पासवर्ड sshh असल्यास ही सूचना त्या व्यक्तीला वगळते. अक्षरे आणि अंकांचे इतर कोणतेही संयोजन असल्यास, ते "प्रवेश नाकारले" संदेश प्रदर्शित करते.

विधान-अभिव्यक्ती if-elif-else

अनेक अटी सत्य नसल्यास, ब्लॉकमध्ये असलेले विधान कार्यान्वित केले जाते. आणखी. हे अभिव्यक्ती असे कार्य करते.

जर अट_1:

    # ब्लॉक असल्यास

    विधान

    विधान

    अधिक विधान

elif अट_2:

    # पहिला एलिफ ब्लॉक

    विधान

    विधान

    अधिक विधान

elif अट_3:

    # सेकंद एलिफ ब्लॉक

    विधान

    विधान

    अधिक विधान

...

आणखी

    विधान

    विधान

    अधिक विधान

तुम्ही कितीही अतिरिक्त अटी निर्दिष्ट करू शकता.

नेस्टेड स्टेटमेंट

एकाधिक अटी लागू करण्याचा दुसरा मार्ग म्हणजे if ब्लॉकमध्ये अतिरिक्त स्थिती तपासणे समाविष्ट करणे.

ऑपरेटर if दुसर्या कंडिशन ब्लॉकच्या आत

gre_score = int(इनपुट("तुमची वर्तमान क्रेडिट मर्यादा प्रविष्ट करा"))

per_grad = int(इनपुट("तुमचे क्रेडिट रेटिंग एंटर करा: "))

प्रति_ग्रॅड > ७० असल्यास:

    ब्लॉक असल्यास # बाह्य

        gre_score > 150 असल्यास:

            ब्लॉक असल्यास # आतील

    प्रिंट ("अभिनंदन, तुम्हाला कर्ज मिळाले आहे")

अन्यथा:

    प्रिंट ("माफ करा, तुम्ही कर्जासाठी पात्र नाही")

हा कार्यक्रम क्रेडिट रेटिंग तपासणी करतो. जर ते 70 पेक्षा कमी असेल, तर प्रोग्राम अहवाल देतो की वापरकर्ता क्रेडिटसाठी पात्र नाही. जर ते जास्त असेल तर, वर्तमान क्रेडिट मर्यादा 150 पेक्षा जास्त आहे की नाही हे पाहण्यासाठी दुसरी तपासणी केली जाते. जर होय, तर कर्ज जारी केले गेले आहे असा संदेश प्रदर्शित केला जातो.

दोन्ही मूल्ये असत्य असल्यास, वापरकर्त्यास कर्ज मिळण्याची शक्यता नाही असा संदेश प्रदर्शित केला जातो. 

आता त्या प्रोग्रॅमवर ​​थोडं काम करू.

gre_score = int(इनपुट("वर्तमान मर्यादा प्रविष्ट करा: "))

per_grad = int(इनपुट("क्रेडिट स्कोअर प्रविष्ट करा:"))

प्रति_ग्रॅड > ७० असल्यास:

    gre_score > 150 असल्यास:

        प्रिंट ("अभिनंदन, तुम्हाला कर्ज मिळाले आहे")

    अन्यथा:

        प्रिंट ("तुमची क्रेडिट मर्यादा कमी आहे")

अन्यथा:

    प्रिंट ("माफ करा, तुम्ही क्रेडिटसाठी पात्र नाही")

कोड स्वतः खूप समान आहे, परंतु नेस्टेड आहे if त्यातील स्थिती खोटी असल्याचे आढळल्यास अल्गोरिदम देखील प्रदान करते. म्हणजेच, कार्डवरील मर्यादा अपुरी आहे, परंतु क्रेडिट इतिहास चांगला आहे, "तुमचे क्रेडिट रेटिंग कमी आहे" असा संदेश प्रदर्शित केला जातो.

जर-अन्य स्थितीत विधान आणखी

चाचणी स्कोअरवर आधारित विद्यार्थ्याचा ग्रेड ठरवणारा दुसरा प्रोग्राम बनवू.

स्कोर = इंट(इनपुट("तुमचा स्कोअर एंटर करा:"))

स्कोअर >= ९० असल्यास:

    प्रिंट ("छान! तुमचा ग्रेड ए आहे")

अन्यथा:

    स्कोअर >= ९० असल्यास:

मुद्रित करा ("छान! तुमचा ग्रेड बी आहे")

    अन्यथा:

स्कोअर >= ९० असल्यास:

    प्रिंट ("चांगले! तुमचा ग्रेड C आहे")

अन्यथा:

    स्कोअर >= ९० असल्यास:

मुद्रित करा ("तुमची ग्रेड डी आहे. सामग्रीची पुनरावृत्ती करणे योग्य आहे.")

    अन्यथा:

प्रिंट ("तुम्ही परीक्षेत नापास झालात")

अर्ज प्रथम स्कोअर 90 पेक्षा जास्त किंवा बरोबर आहे की नाही हे तपासतो. जर होय, तर तो A ग्रेड मिळवून देतो. ही स्थिती चुकीची असल्यास, त्यानंतरच्या तपासण्या केल्या जातात. आम्ही पाहतो की पहिल्या दृष्टीक्षेपात अल्गोरिदम जवळजवळ समान आहे. त्यामुळे आत तपासण्याऐवजी आणखी संयोजन वापरणे चांगले if-elif-else.

तर ऑपरेटर if एक अतिशय महत्त्वाचे कार्य करते - हे सुनिश्चित करते की कोडचे काही तुकडे आवश्यक असल्यासच कार्यान्वित केले जातात. त्याशिवाय प्रोग्रामिंगची कल्पना करणे अशक्य आहे, कारण अगदी सोप्या अल्गोरिदमसाठी देखील "तुम्ही डावीकडे गेलात तर तुम्हाला ते सापडेल आणि जर तुम्ही उजवीकडे गेलात तर तुम्हाला हे आणि ते करणे आवश्यक आहे."

प्रत्युत्तर द्या