पाइथनमा सशर्त यदि कथन। सिन्ट्याक्स, अन्य/एलिफ ब्लकहरू, उदाहरणहरू

कार्यक्रम सिक्ने प्रक्रियामा, यो प्रायः कार्यक्रमहरू सिर्जना गर्न आवश्यक छ जुन वास्तविक जीवनमा लागू गर्न सजिलो छैन। आखिर, समय-समयमा तपाईले केहि सर्तहरूमा मात्र निर्देशनहरू पालना गर्नुपर्छ। कार्यक्रममा यसलाई लागू गर्न सक्षम हुन, सबै भाषाहरूमा नियन्त्रण कथनहरू छन्। तिनीहरूको मद्दतले, तपाईंले कोड कार्यान्वयनको प्रवाहलाई नियन्त्रण गर्न सक्नुहुन्छ, लूपहरू सिर्जना गर्न वा निश्चित कार्यहरू प्रदर्शन गर्न सक्नुहुन्छ जब एक निश्चित अवस्था सत्य हुन्छ।

आज हामी if कथनको बारेमा कुरा गर्नेछौं, जसले कुनै निश्चित अवस्थाको लागि हालको अवस्था जाँच गर्दछ, र यस जानकारीको आधारमा, थप कार्यहरूको बारेमा निर्णय गर्दछ।

नियन्त्रण बयान को प्रकार

सामान्यतया, यदि कार्यक्रमको प्रवाह नियन्त्रण गर्ने एक मात्र कथन होइन। साथै ऊ आफैं पनि अपरेटरहरूको ठूलो श्रृंखलाको एक घटक हुन सक्छ।

त्यहाँ लूप र कथनहरू पनि छन् जसले यसको कार्यान्वयनको प्रक्रियालाई नियन्त्रण गर्दछ। आज हामी केवल सशर्त अपरेटर र यो भाग लिन सक्ने चेन बारे कुरा गर्नेछौं।

प्रोग्रामिङ मा, त्यहाँ शाखा जस्तै एक चीज छ। यो ठ्याक्कै यो हो कि आदेशहरूको एक अनुक्रम हो जुन एक निश्चित अवस्था सत्य छ भने मात्र कार्यान्वयन गरिन्छ। मापदण्ड आफै फरक हुन सक्छ:

  1. कुनै निश्चित मानमा चरको समानता।
  2. एक विशिष्ट कार्य प्रदर्शन।
  3. आवेदन स्थिति (संकुचित वा छैन)।

स्पेक्ट्रम धेरै ठूलो हुन सक्छ। सशर्त कथनहरू धेरै प्रकारहरूमा आउँछन्:

  1. एउटा शाखा संग। त्यो हो, एकल जाँच गरिन्छ, जसको फलस्वरूप निश्चित कार्यहरू गरिन्छ।
  2. दुई वा बढी शाखाहरूसँग। यदि मापदण्ड 1 साँचो छ भने, मापदण्ड 2 जाँच गर्नुहोस्। यदि यो सत्य हो भने, त्यसपछि 3 जाँच गर्नुहोस्। र त्यसोभए, आवश्यकता अनुसार धेरै जाँचहरू गर्नुहोस्।
  3. धेरै शर्तहरु संग। यहाँ सबै कुरा सरल छ। दोभाषेले धेरै सर्तहरू वा ती मध्ये एउटाको लागि जाँच गर्दछ।

यदि कथन छ भने

if स्टेटमेन्टको संरचना सबै भाषाहरूमा समान छ। यद्यपि, पाइथनमा, यसको सिन्ट्याक्स अरू सबै भन्दा केही फरक छ:

यदि अवस्था:

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

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

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

पहिले, अपरेटर आफैं घोषणा गरिएको छ, जस पछि यो काम सुरु गर्न सर्त लेखिएको छ। अवस्था या त सत्य वा गलत हुन सक्छ।

यो आदेश संग एक ब्लक द्वारा पछ्याइएको छ। यदि यो तुरुन्तै पूरा गर्न मापदण्ड पछ्याउँछ भने, आदेशहरूको अनुरूप अनुक्रमलाई यदि ब्लक भनिन्छ। तपाईं यसमा कुनै पनि संख्यामा आदेशहरू प्रयोग गर्न सक्नुहुन्छ।

ध्यान! सबै भित्र इन्डेन्टेसन यदि ब्लक आदेशहरू एउटै साइज हुनुपर्छ। ब्लक सीमाहरू इन्डेन्टहरू द्वारा निर्धारण गरिन्छ। 

भाषा कागजात अनुसार, इन्डेन्टेशन 4 स्पेस हो। 

यो अपरेटरले कसरी काम गर्छ? जब अनुवादकले if शब्द देख्छ, यसले तुरुन्तै प्रयोगकर्ता-निर्दिष्ट मापदण्ड विरुद्ध अभिव्यक्ति जाँच गर्दछ। यदि यो मामला हो भने, त्यसपछि उसले निर्देशनहरू खोज्न र पालन गर्न थाल्छ। अन्यथा, यस ब्लकबाट सबै आदेशहरू छोडिएका छन्।

यदि अवस्था पछिको कथन इन्डेन्ट गरिएको छैन भने, यसलाई यदि ब्लकको रूपमा व्यवहार गर्दैन। हाम्रो अवस्थामा, यो लाइन छ । त्यसकारण, जाँचको नतिजालाई ध्यान नदिई, यो लाइन कार्यान्वयन गरिनेछ।

यो अपरेटरले कसरी काम गर्छ भन्ने उदाहरणको लागि यहाँ एउटा कोड स्निपेट छ।

संख्या = int(इनपुट("अङ्क प्रविष्ट गर्नुहोस्:"))

यदि संख्या > 10:

    छाप्नुहोस् ("संख्या 10 भन्दा ठूलो छ")

यो कार्यक्रमले प्रयोगकर्तालाई नम्बरको लागि प्रम्प्ट गर्छ र जाँच गर्दछ कि यदि यो 10 भन्दा ठूलो छ भने, यदि त्यसो हो भने, यसले उपयुक्त जानकारी फर्काउँछ। उदाहरणका लागि, यदि प्रयोगकर्ताले नम्बर 5 प्रविष्ट गर्दछ, त्यसपछि कार्यक्रम मात्र समाप्त हुनेछ, र यो हो।

तर यदि तपाईले 100 नम्बर निर्दिष्ट गर्नुभयो भने, तब दोभाषेले बुझ्नेछ कि यो दस भन्दा बढी छ, र रिपोर्ट गर्नुहोस्।

ध्यान! हाम्रो अवस्थामा, यदि सर्त गलत छ भने, कार्यक्रम रोकिन्छ, किनभने निर्देशन पछि कुनै आदेश दिइँदैन।

माथिको कोडमा एउटा मात्र आदेश छ। तर तिनीहरूमध्ये धेरै छन्। केवल आवश्यकता इन्डेन्ट गर्न हो।

अब आदेशहरूको यो क्रम विश्लेषण गरौं।

संख्या = int(इनपुट("नम्बर लेख्नुहोस्:"))

यदि संख्या > 10:

    छाप्नुहोस् ("पहिलो लाइन")

    छाप्नुहोस् ("दोस्रो रेखा")

    प्रिन्ट ("तेस्रो रेखा")

प्रिन्ट ("नम्बर प्रविष्ट गरिएको संख्याको पर्वाह नगरी कार्यान्वयन गरिएको रेखा")

प्रिन्ट ("अन्त आवेदन")

यदि तपाईले मानहरू 2, 5, 10, 15, 50 प्रविष्ट गर्नुभयो भने आउटपुट के हुनेछ अनुमान गर्ने प्रयास गर्नुहोस्।

तपाईले देख्न सक्नुहुन्छ, यदि प्रयोगकर्ता द्वारा प्रविष्ट गरिएको संख्या दस भन्दा बढि छ भने, त्यसपछि तीन लाइनहरू आउटपुट हुन्छन् + एक "हरेक पटक चलाउनुहोस् ..." र एउटा "अन्त" पाठको साथ, र यदि दस भन्दा कम छ भने, केवल एक, संग। फरक पाठ। सत्य भएमा मात्र 3,4,5 लाई कार्यान्वयन गरिनेछ। यद्यपि, प्रयोगकर्ताले जुन संख्या निर्दिष्ट गरे पनि अन्तिम दुई लाइनहरू लेखिनेछ।

यदि तपाइँ कन्सोलमा सीधा बयानहरू प्रयोग गर्नुहुन्छ भने, परिणाम फरक हुनेछ। दोभाषेले तुरुन्तै बहु-लाइन मोड खोल्छ यदि, प्रमाणीकरण मापदण्ड निर्दिष्ट गरेपछि, इन्टर थिच्नुहोस्।

मानौं हामीले निम्न आदेशहरूको क्रम लेखेका छौं।

>>>

>>> n = 100

>>> यदि n > 10:

...

त्यस पछि, हामी देख्नेछौं कि >>> ellipsis द्वारा प्रतिस्थापित गरिएको छ। यसको मतलब बहुलाइन इनपुट मोड सक्षम गरिएको छ। सरल शब्दहरूमा, यदि तपाईंले इन्टर थिच्नुभयो भने, तपाईंलाई निर्देशनको दोस्रो चरणको इनपुटमा स्थानान्तरण गरिनेछ। 

र यो ब्लक बाहिर निस्कन को लागी, तपाइँ ब्लक मा एक थप निर्माण थप्न आवश्यक छ if.

>>>

>>> n = 100

>>> यदि n > 10:

… छाप्नुहोस्(«nv 10»)

...

यदि शर्त सही छैन भने, कार्यक्रम समाप्त हुन्छ। यो एक समस्या हो, किनभने प्रयोगकर्ताले असफलताको कारण बन्द भएको रूपमा यस्तो कार्यक्रम महसुस गर्न सक्छ। त्यसैले, प्रयोगकर्तालाई प्रतिक्रिया दिन आवश्यक छ। यसको लागि, लिङ्क प्रयोग गरिन्छ यदि - अर्को.

अभिव्यक्ति अपरेटर यदि - अर्को

यो अपरेटरले तपाईंलाई लिङ्क कार्यान्वयन गर्न अनुमति दिन्छ: यदि अभिव्यक्ति निश्चित नियमसँग मेल खान्छ भने, यी कार्यहरू गर्नुहोस्, र यदि होइन भने, त्यसपछि अरू। त्यो हो, यसले तपाईंलाई कार्यक्रमको प्रवाहलाई दुईवटा सडकमा विभाजन गर्न अनुमति दिन्छ। वाक्य रचना सहज छ:

यदि अवस्था:

    # यदि ब्लक गर्नुहोस्

    कथन 1

    कथन 2

    र यति

अर्को:

    #अन्य ब्लक

    कथन 3

    कथन 4

    र यस्तै:

यो अपरेटरले कसरी काम गर्छ भनेर व्याख्या गरौं। पहिलो, मानक कथन थ्रेड मा कार्यान्वयन गरिएको छ यो, मेल खान्छ कि भनेर जाँच गर्दै अवस्था "सही वा गलत"। थप कार्यहरू जाँचको नतिजामा निर्भर गर्दछ। यदि सही छ भने, सर्त पछ्याउने निर्देशनहरूको अनुक्रममा रहेको निर्देशन सीधै कार्यान्वयन हुन्छ। यो, यदि यो गलत हो भने अरू

यस तरिकाले तपाईं त्रुटिहरू ह्यान्डल गर्न सक्नुहुन्छ। उदाहरण को लागी, प्रयोगकर्ता एक त्रिज्या प्रविष्ट गर्न आवश्यक छ। जाहिर छ, यो प्लस चिन्ह भएको संख्या मात्र हुन सक्छ, वा यो शून्य मान हो। यदि यो ० भन्दा कम छ भने, तपाईंले सकारात्मक नम्बर प्रविष्ट गर्न सोध्ने सन्देश जारी गर्न आवश्यक छ। 

यहाँ यो कार्य लागू गर्ने कोड छ। तर यहाँ एउटा गल्ती छ। कुन अनुमान गर्ने प्रयास गर्नुहोस्। 

त्रिज्या = int(इनपुट("इन्टर रेडियस:"))

यदि त्रिज्या >= ०:

    छाप्नुहोस् ("परिधि = ", 2 * 3.14 * त्रिज्या)

    छाप्नुहोस् ("क्षेत्र = ", 3.14 * त्रिज्या ** 2)

    अर्को:

        छाप्नुहोस् ("कृपया सकारात्मक नम्बर प्रविष्ट गर्नुहोस्")

इन्डेन्टेसन बेमेल त्रुटि। यदि र अन्य तिनीहरू बिना वा तिनीहरूको समान संख्यामा अवस्थित हुनुपर्छ (उनीहरू नेस्ट छन् वा छैनन् भन्नेमा निर्भर गर्दछ)।

अर्को प्रयोग केस दिनुहोस् (जहाँ सबै कुरा अपरेटर पङ्क्तिबद्धताको साथ सही हुनेछ) - एउटा एप्लिकेसन तत्व जसले पासवर्ड जाँच गर्दछ।

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

यदि पासवर्ड == «sshh»:

    छाप्नुहोस् ("स्वागत")

अर्को:

    प्रिन्ट ("पहुँच अस्वीकार")

यदि पासवर्ड sshh छ भने यो निर्देशनले व्यक्तिलाई थप छोड्छ। यदि अक्षर र संख्याहरूको कुनै अन्य संयोजन छ भने, त्यसपछि यसले "पहुँच अस्वीकार" सन्देश प्रदर्शन गर्दछ।

कथन-अभिव्यक्ति if-elif-else

धेरै सर्तहरू सत्य नभएमा मात्र, ब्लकमा रहेको कथन कार्यान्वयन हुन्छ। अरू। यो अभिव्यक्ति यसरी काम गर्दछ।

यदि शर्त_1:

    # यदि ब्लक गर्नुहोस्

    बयान

    बयान

    थप कथन

elif शर्त_2:

    # पहिलो एलिफ ब्लक

    बयान

    बयान

    थप कथन

elif शर्त_3:

    # दोस्रो एलिफ ब्लक

    बयान

    बयान

    थप कथन

...

अरू

    बयान

    बयान

    थप कथन

तपाईं कुनै पनि संख्या थप सर्तहरू निर्दिष्ट गर्न सक्नुहुन्छ.

नेस्टेड कथनहरू

धेरै सर्तहरू लागू गर्ने अर्को तरिका यदि ब्लकमा थप सर्त जाँचहरू घुसाउनु हो।

अपरेटर if अर्को सर्त ब्लक भित्र

gre_score = int(इनपुट("तपाईको हालको क्रेडिट सीमा प्रविष्ट गर्नुहोस्"))

per_grad = int(इनपुट("तपाईंको क्रेडिट रेटिङ प्रविष्ट गर्नुहोस्: "))

यदि प्रति_ग्रेड > ७०:

    # बाहिरी यदि ब्लक

        यदि gre_score > 150:

            # भित्री यदि ब्लक

    छाप्नुहोस् ("बधाई छ, तपाईंले ऋण प्राप्त गर्नुभयो")

अर्को:

    छाप्नुहोस् ("माफ गर्नुहोस्, तपाईं ऋणको लागि योग्य हुनुहुन्न")

यो कार्यक्रमले क्रेडिट रेटिङ जाँच गर्छ। यदि यो 70 भन्दा कम छ भने, कार्यक्रमले रिपोर्ट गर्दछ कि प्रयोगकर्ता क्रेडिटको लागि योग्य छैन। यदि यो ठूलो छ भने, हालको क्रेडिट सीमा 150 भन्दा बढी छ कि छैन भनेर हेर्न दोस्रो जाँच गरिन्छ। यदि हो भने, त्यसपछि एक सन्देश प्रदर्शित हुन्छ कि ऋण जारी गरिएको छ।

यदि दुबै मानहरू गलत छन् भने, प्रयोगकर्तासँग ऋण प्राप्त गर्ने सम्भावना छैन भन्ने सन्देश प्रदर्शित हुन्छ। 

अब त्यो कार्यक्रमलाई अलिकति पुन: काम गरौं।

gre_score = int(इनपुट("हालको सीमा प्रविष्ट गर्नुहोस्: "))

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

यदि प्रति_ग्रेड > ७०:

    यदि gre_score > 150:

        छाप्नुहोस् ("बधाई छ, तपाईंले ऋण प्राप्त गर्नुभयो")

    अर्को:

        छाप्नुहोस् ("तपाईंको क्रेडिट सीमा कम छ")

अर्को:

    छाप्नुहोस् ("माफ गर्नुहोस्, तपाईं क्रेडिटको लागि योग्य हुनुहुन्न")

कोड आफैमा धेरै समान छ, तर नेस्टेड if यसको अवस्था गलत भएको अवस्थामा पनि एक एल्गोरिदम प्रदान गर्दछ। त्यो हो, कार्डमा सीमा अपर्याप्त छ, तर क्रेडिट इतिहास राम्रो छ, सन्देश "तपाईंसँग कम क्रेडिट मूल्याङ्कन छ" प्रदर्शित हुन्छ।

if-else कथन एक शर्त भित्र अरू

परीक्षाको अङ्कको आधारमा विद्यार्थीको ग्रेड निर्धारण गर्ने अर्को कार्यक्रम गरौं।

स्कोर = int(इनपुट("तपाईंको स्कोर प्रविष्ट गर्नुहोस्:"))

यदि स्कोर >= ९०:

    प्रिन्ट ("महान! तपाईको ग्रेड ए हो")

अर्को:

    यदि स्कोर >= ९०:

प्रिन्ट ("महान! तपाईको ग्रेड बी हो")

    अर्को:

यदि स्कोर >= ९०:

    प्रिन्ट ("राम्रो! तपाईको ग्रेड सी हो")

अर्को:

    यदि स्कोर >= ९०:

छाप्नुहोस् ("तपाईको ग्रेड D हो। यो सामग्री दोहोर्याउन लायक छ।")

    अर्को:

प्रिन्ट ("तपाई परीक्षा असफल हुनुभयो")

एप्लिकेसनले पहिले अंक ९० भन्दा बढी वा बराबर छ कि छैन भनेर जाँच गर्छ। यदि हो भने, त्यसले A ग्रेड फर्काउँछ। यदि यो अवस्था गलत छ भने, त्यसपछि पछि जाँचहरू गरिन्छ। हामी देख्छौं कि एल्गोरिथ्म पहिलो नजरमा लगभग समान छ। त्यसैले भित्र जाँच गर्नुको सट्टा अरू संयोजन प्रयोग गर्न राम्रो if-elif-else.

त्यसैले अपरेटर if धेरै महत्त्वपूर्ण कार्य गर्दछ - यसले निश्चित गर्दछ कि कोडको केहि टुक्राहरू मात्र कार्यान्वयन गरिन्छ यदि त्यहाँ यसको लागि आवश्यक छ। यो बिना प्रोग्रामिङको कल्पना गर्न असम्भव छ, किनभने सरल एल्गोरिदमलाई पनि फोर्कहरू चाहिन्छ जस्तै "यदि तपाइँ बाँयामा जानुहुन्छ, तपाइँ यसलाई फेला पार्नुहुनेछ, र यदि तपाइँ दायाँ जानुहुन्छ भने, तपाइँले यो र त्यो गर्न आवश्यक छ।"

जवाफ छाड्नुस्