मान लें कि निम्न न्यूनतम कोड:

    x = input("Numeral:  ")
    y = input("Numeral:  ")
    if x < y:
        print(f'{x} is less than {y}.')
    if x > y:
        print(f'{x} is greater than {y}.')
    else:
        print(f'{x} is equal to {y}.')

मैं इसे खिलाता हूं और आता हूं

    $ python3 draft.py
    Numeral:  1
    Numeral:  0
    1 is greater than 0.

यह ठीक से चलता है, फिर ऑर्डर को इनपुट में बदलें:

    $ python3 draft.py
    Numeral:  0
    Numeral:  1
    0 is less than 1.
    0 is equal to 1.

अन्य शाखा को निष्पादित किया गया था।

क्या else शाखा केवल अपने निकटतम 'if' से जुड़ती है?
इसके पीछे क्या तंत्र है?

-6
Calculus 3 अप्रैल 2018, 17:13

3 जवाब

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

बेशक यह करता है - निकटतम if मिलान इंडेंटेशन के साथ, जो कि Python कैसे संकलित करता है। यह आपके उदाहरण में समझ में नहीं आएगा:

if x < y:
    print(f'{x} is less than {y}.')
if x > y:
    print(f'{x} is greater than {y}.')
else:
    print(f'{x} is equal to {y}.')

पाठकों के दृष्टिकोण से else के संदर्भ में x<y के लिए। यह किसी भी भाषा में (ब्रेसिज़ के साथ) समान होगा। आपके मतलब के सबसे करीब लेकिन आपके उदाहरण के लिए कोई मतलब नहीं होगा:

if something:
    print("something")
    if otherThing:
        print("that")
else: print("otherwise!")

अब यह स्पष्ट है कि else पहले if का है। यह बिल्कुल भी पायथन विशिष्ट नहीं है। यदि आप ट्रिपल चेक चाहते हैं:

if x > y:
     ...
elif x < y:
     ...
else:
     ...

if (else if) else निर्माण - इस तरह सभी भाषाएं इसे संभालती हैं, न कि केवल पायथन। यह वही है:

if x > y:
     ...
else:
    if x < y:
        ...
    else:
        ...

जो स्पष्ट करता है कि प्रत्येक else कहां से संबंधित है।

1
kabanus 3 अप्रैल 2018, 14:23

यदि शेल कोड में व्यक्त किया जाता है, तो अजगर का सिंटैक्स कुछ तर्क विवरण को छोड़ देता है

    if (( x < y)); then
        echo "$y is less than $x"
    fi #indicate to terminate the first if
    if (( x > y)); then
        echo "$x is greater than $y."
    else
        echo "$x is equal to $y."
    fi #mark the end of second if

यह स्पष्ट है कि श्रृंखला if, if, if एकाधिक कार्य है, जबकि if, elif, elif, else एकल कार्य है।

0
Calculus 4 अप्रैल 2018, 06:33

हां, else केवल लिखे जाने पर अंतिम को संदर्भित करता है। आप दूसरे if के बजाय elif का उपयोग करना चाह सकते हैं, जो पहले if की शर्त पूरी होने पर लूप को तोड़ देगा।

    x = input("Numeral:  ")
    y = input("Numeral:  ")
    if x < y:
        print(f'{x} is less than {y}.')
    elif x > y:
        print(f'{x} is greater than {y}.')
    else:
        print(f'{x} is equal to {y}.')
0
emecas 3 अप्रैल 2018, 14:33