2013-08-12 8 views
27

मैं पाइथन में लॉजिकल ऑपरेटरों के साथ मिलने वाले परिणामों के साथ थोड़ा उलझन में हूं। मैं एक नौसिखिया हूं और कुछ किताबों के उपयोग के साथ अध्ययन कर रहा हूं, लेकिन वे जितना चाहें उतना विस्तार से व्याख्या नहीं करते हैं।पायथन का लॉजिकल ऑपरेटर और

five = 5 
two = 2 

print five and two 

>> 2 

यह सिर्फ दो चर outputting किया जा रहा है:

यहाँ अपने खुद के कोड है।

five = 5 
two = 2 
zero = 0 

print five and two and zero 

तो, मैंने एक और परिवर्तनीय पूर्णांक जोड़ा। फिर मैंने मुद्रित किया और निम्नलिखित आउटपुट प्राप्त किया:

>> 0 

पृष्ठभूमि में पायथन के साथ क्या चल रहा है? आउटपुट कुछ 7 या 5 की तरह क्यों नहीं है, 2.

+0

धन्यवाद दोस्तों, मुझे समझ में आता है कि मैं केवल पांच + दो कर सकता हूं जो 7 के बराबर होगा, मैं बस यह जानना चाहता था कि कैसे और ऑपरेटर काम करता है। – BubbleMonster

+0

यह ध्यान रखना दिलचस्प हो सकता है कि आपने अपने अंतिम कथन में चर के क्रम को बदल दिया --- 'पांच और शून्य और दो प्रिंट करें --- आपको परिणामस्वरूप' 0' मिल गया होगा। आप कह सकते हैं कि 'और' 'पहला [झूठा] (http://docs.python.org/release/2.5.2/lib/truth.html) मान देता है जो इसे पाता है, और यदि उसे कुछ भी नहीं मिलता है, अंतिम परिणाम देता है। –

+0

इसका कारण यह है कि 'और' प्रश्न का उत्तर देते हैं: "क्या ये सभी चीजें सच्ची हैं?", और इसके उत्तर के रूप में कुछ सच/झूठी वापसी करती है। 'ए और बी' पर विचार करें। और ' पहले 'ए' की जांच करें। यदि 'ए' गलत है, तो संपूर्ण 'और' कथन को झूठा लौटा देना चाहिए (क्योंकि यदि एक बात झूठी है, तो यह असंभव है कि दोनों सत्य हैं)। इसलिए 'और' कुछ झूठी वापसी करेगा, और यह सुविधा के मामले के रूप में 'a' (क्योंकि' a' पहले से ही झूठा है) का उपयोग करता है। हालांकि, यदि 'a' सत्य है, तो' और 'केवल' b' को वापस करने की आवश्यकता है। –

उत्तर

32

पायथन बूलियन ऑपरेटर अंतिम मूल्य का मूल्यांकन करते हैं, सही/गलत नहीं। docs इस का एक अच्छा विवरण है:

अभिव्यक्ति x and y पहले मूल्यांकन करता x; यदि xfalse है, तो इसका मूल्य वापस कर दिया गया है; अन्यथा, y का मूल्यांकन किया गया है और परिणामी मूल्य वापस कर दिया गया है।

+1

ने भी इस दस्तावेज़ पृष्ठ पर सारांशित किया है: http://docs.python.org/2/library/stdtypes.html#boolean-operations-and-or-not –

+0

अब पायथन में सशर्त अभिव्यक्तियां हैं, आप 'x और y' को 'y if x x x' लिखने के एक छोटे तरीके के रूप में सोच सकते हैं। – dan04

+2

@ dan04 जो अधिकतर सत्य है और अधिकांश लोगों के लिए बुलियन की तुलना में अधिक स्पष्ट है, इसलिए इसे प्राथमिकता दी जानी चाहिए। लेकिन चूंकि 'x' को दो बार गणना करने की आवश्यकता हो सकती है, इसलिए 'x' महंगा होने पर या इसका दुष्प्रभाव (कार्य या जटिल अभिव्यक्ति, आदि ... जैसे' महंगा_एक्स() और महंगा_y()')। लेकिन फिर भी 'if' खंड लिखने के लिए और अधिक स्पष्ट है। – tdelaney

1

पायथन में यह AND उदाहरण के लिए जावा में && के बराबर है। इसका मतलब अंग्रेजी भाषा में नहीं है। AND एक तार्किक ऑपरेटर है। मान लें कि पांच में 5 और दो धारण हैं 2. पायथन दस्तावेज़ से: अभिव्यक्ति x और y पहले x का मूल्यांकन करती है; यदि एक्स झूठा है, तो इसका मूल्य वापस कर दिया जाता है; अन्यथा, y का मूल्यांकन किया जाता है और परिणामी मूल्य वापस कर दिया जाता है। असल में, यह आपके मामले में अंतिम पूर्णांक का मूल्यांकन करता है जो सत्य है।

if (five and two): 
...  print "True" 
... else: 
...  print "False" 

एंड एक लॉजिकल ऑपरेटर है, एक विशिष्ट मामले के लिए तर्क का परीक्षण करने के लिए, एक अंकगणितीय ऑपरेटर नहीं है। यदि आप पांच और दो के लिए 7 जैसे परिणाम प्राप्त करना चाहते हैं, तो आपको "+" का उपयोग करना चाहिए जिसका अर्थ है दो पूर्णांक जोड़ना। नीचे देखें:

>>> five = 5 
>>> two = 2 
>>> print five + two 
7 
+0

मुझे यकीन नहीं है कि यह ओपी के सवाल का जवाब देता है, फिर भी वह पूछ रहा है कि वह क्यों नतीजा देता है कि वह क्यों है, यह केवल एक सच्चे/झूठे उत्तर के बजाय अंतिम चर का मूल्य क्यों देता है। – Lochemage

+0

मैंने अभी जवाब दिया है :) फिर से जांचें –

+0

वह '5 और 2' वापस लौटने की उम्मीद कर रहा है, मुझे नहीं लगता कि वह पूछ रहा है कि यह विशेष रूप से सच/गलत क्यों नहीं लौटाता है। – kindall

2

एक साइड नोट के रूप में: (मेरे पास टिप्पणी के लिए पर्याप्त प्रतिनिधि नहीं है) और एकाधिक चर प्रिंट करने के लिए एंड ऑपरेटर की आवश्यकता नहीं है। आप print five AND two के बजाय print five, two जैसे अल्पविरामों के साथ परिवर्तनीय नामों को आसानी से अलग कर सकते हैं। आप print "the var five is equal to: %s" %five जैसे प्रिंट लाइन में चर जोड़ने के लिए एस्केप का भी उपयोग कर सकते हैं। कि यहां पर अधिक: http://docs.python.org/2/library/re.html#simulating-scanf

की तरह अन्य लोगों ने कहा और एक तार्किक ऑपरेटर है और स्ट्रिंग के लिए इस्तेमाल किया है इस तरह के

के रूप में एक साथ कई की स्थिति,
if (five == 5) AND (two == 2): 
    print five, two 
2

बूलियन और ऑपरेटरों पहला मान 5 वापस आ जाएगी अभिव्यक्ति का मूल्यांकन किया है अगर false, और दूसरा मान 2 यदि अभिव्यक्ति का मूल्यांकन true है। क्योंकि 5 और 2 वास्तविक, गैर-झूठे और गैर-शून्य मान दोनों हैं, अभिव्यक्ति का मूल्यांकन सही है।

यदि आप दोनों चर मुद्रित करना चाहते हैं तो आप उन्हें स्ट्रिंग में जोड़ सकते हैं और प्रिंट कर सकते हैं।

five = 5 
two = 2 
print five + " and " + two 

या उनका योग मुद्रित करने के लिए आप इस्तेमाल कर सकते हैं

print five + two 

यह document बताते हैं कि कैसे तार्किक बूलियन ऑपरेटरों का उपयोग करें।

1

0 और 9 आज़माएं।

परिणाम 0 है क्योंकि 0 का मान गलत है। and ऑपरेटर के बाईं ओर स्थित ऑपरेशन गलत है इसलिए पूरी अभिव्यक्ति गलत है और 0

संबंधित मुद्दे