मैं पायथन में एक बूलियन का उपयोग कैसे करूं?


109

क्या पायथन में वास्तव में एक बूलियन मूल्य होता है? मुझे पता है कि आप कर सकते हैं:

checker = 1
if checker:
    #dostuff

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

Boolean checker;
if (someDecision)
{
    checker = true;
}
if(checker)
{
    //some stuff
}

क्या पायथन में एक बूलियन के रूप में ऐसी बात है? मैं इसे प्रलेखन में ऐसा कुछ भी प्रतीत नहीं कर सकता।


1
याद रखें ... चर बनाते समय आपको प्रकार घोषित करने की आवश्यकता नहीं है। बस 'चेकर = असत्य' पर्याप्त होगा।
डोमिनिक बाउ-समरा

10
@ डॉमिनिक बू-समरा: "आपको प्रकार घोषित करने की आवश्यकता नहीं है"? यह बिल्कुल सच नहीं है। मुझे लगता है कि आपको कहना चाहिए "आप संभवतः एक चर के लिए एक प्रकार घोषित नहीं कर सकते।"
एस.लॉट नोव

2
@ S.Lott "आप संभवतः एक चर के लिए एक प्रकार की घोषणा नहीं कर सकते हैं" ... अभी भी सच नहीं है क्योंकि आप टाइपकास्ट कर सकते हैं some_var = int("1234")... वह पंक्ति स्पष्ट रूप से सेट होती है some_var=>int
Kolob Canyon

जवाबों:


142
checker = None 

if some_decision:
    checker = True

if checker:
    # some stuff

[संपादित करें]

अधिक जानकारी के लिए: http://docs.python.org/library/functions.html#bool

आपका कोड भी काम करता है, क्योंकि आवश्यक होने पर 1परिवर्तित किया Trueजाता है। दरअसल पाइथन के पास लंबे समय तक (पुरानी सी के रूप में) बूलियन प्रकार नहीं था, और कुछ प्रोग्रामर अभी भी बूलियन के बजाय पूर्णांक का उपयोग करते हैं।


17
आमतौर पर 'if' के बजाय चेकर = (some_decision) (जैसे चेकर = (a <b)) का उपयोग करना सरल होता है।
MAK

11
यह स्निपेट थोड़ा भ्रामक है ... परीक्षण करने से पहले आपको "चेकर" को परिभाषित करने की आवश्यकता है। जबकि ओपी इसे पहले परिभाषित करता है, आपके उदाहरण में चेकर = कोई भी पूरी तरह से आवश्यक नहीं है या आपको एक अनबाउंडलॉकर प्राप्त होगा
dprogramz

पायथन बूलियन पूर्णांक हैं। Trueऔर अतिरंजित के साथ Falseविस्तारित intवस्तुओं के संदर्भ हैं __str__और __repr__
पागल भौतिकवादी

अजगर बूलियन पूर्णांक नहीं हैं; 1 is not True, लेकिन 1 == True
बॉलपॉइंटबैन

@ बॉलपॉइंटबैन: वे सामान्य अर्थों में पूर्णांक होते हैं जो कि intप्रकार के उदाहरण हैं , जैसा कि दिखाया गया है isinstance(True, int)
बैस्टियन लेओनार्ड

93

बूलियन बिल्डरों का पूंजीकरण किया जाता है: Trueऔर False

ध्यान दें कि आप checker = bool(some_decision)थोड़े से आशुलिपि के रूप में कर सकते हैं - boolकेवल कभी लौटेंगे Trueया False

यह भविष्य में संदर्भ के लिए है कि पता करने के लिए अच्छा है वर्गों को परिभाषित करने __nonzero__या__len__ हो जाएगा Trueया Falseउन कार्यों का परिणाम पर निर्भर करता है, लेकिन लगभग हर अन्य वस्तु के बूलियन परिणाम होगा True(के अलावा Noneवस्तु, खाली दृश्यों, और संख्यात्मक शून्य)।


1
अंतर्दृष्टि के लिए बहुत बहुत धन्यवाद। जैसा कि लोकप्रिय वोट दूसरे जवाब पर पहुंच गया है, मैंने बास्टियन को 'स्वीकृत जवाब' से सम्मानित किया। हालाँकि तुम्हारा सबसे ज्यादा मददगार था! :)
फेडरर

23
bravado: वह कौन सा उत्तर है जो आपको सबसे ज्यादा मददगार लगता है। यदि कोई अन्य उत्तर अधिक उत्कीर्ण किया जाता है तो यह पूरी तरह अप्रासंगिक है।
tzot

2
और लोकप्रिय वोट भी इसी जवाब के साथ है। अपना वोट बदलने पर विचार करें।
एलास्टर मूडी

12

True... और Falseजाहिर है।

अन्यथा, Noneगलत का मूल्यांकन करता है, जैसा कि पूर्णांक 0और फ्लोट भी करता है 0.0(हालांकि मैं इस तरह फ्लोट का उपयोग नहीं करता)। इसके अलावा, खाली सूची [], खाली ट्यूपलेट ()और खाली तार ''या ""गलत मूल्यांकन।

फ़ंक्शन के साथ इसे स्वयं आज़माएँ bool():

bool([])
bool(['a value'])
bool('')
bool('A string')
bool(True)  # ;-)
bool(False)
bool(0)
bool(None)
bool(0.0)
bool(1)

आदि..


5

बूलियन प्रकार को दस्तावेज़ में परिभाषित किया गया है:
http://docs.python.org/library/stdtypes.html#bools-nues

डॉक्टर से उद्धृत:

बूलियन मूल्य दो स्थिर वस्तुएं झूठी और सच्ची हैं। उनका उपयोग सत्य मूल्यों का प्रतिनिधित्व करने के लिए किया जाता है (हालांकि अन्य मूल्यों को भी गलत या सत्य माना जा सकता है)। संख्यात्मक संदर्भों में (उदाहरण के लिए जब एक अंकगणितीय ऑपरेटर के तर्क के रूप में उपयोग किया जाता है), वे क्रमशः पूर्णांक 0 और 1 की तरह व्यवहार करते हैं। बिल्ट-इन फ़ंक्शन बूल () का उपयोग किसी बूलियन के लिए किसी भी मूल्य को देने के लिए किया जा सकता है, यदि मूल्य को एक सत्य मान के रूप में व्याख्या किया जा सकता है (ऊपर अनुभाग सत्य मान परीक्षण देखें)।

उन्हें क्रमशः गलत और सत्य के रूप में लिखा जाता है।

तो जावा कोड निकालने ब्रेसिज़, परिवर्तन में trueकरने के लिए Trueऔर तुम ठीक हो जाएगा :)


4

हां, एक boolडेटा प्रकार है (जो विरासत में मिला है intऔर जिसके केवल दो मूल्य हैं: Trueऔर False)।

लेकिन साथ ही पायथन में boolean-ableहर वस्तु के लिए अवधारणा है, जिसका उपयोग फ़ंक्शन bool([x])को कहा जाता है।

और देखें: वस्तु नॉनज़रो और बूलियन-मूल्य-ऑफ़-ऑब्जेक्ट्स-इन-पायथन


x = बूल (0) # झूठा && x = बूल (१) # सच्चा
जूलियन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.