2013-02-22 13 views
23

डिजाइन निम्नलिखित बयान करने के लिए एक तार्किक व्यंजक बराबर है:जांच करें कि वस्तु एक नंबर या बूलियन

x तीन या पांच तत्वों की सूची है, दूसरा तत्व जिनमें से स्ट्रिंग 'Hip' और पहला है जिनमें से कोई संख्या या बूलियन नहीं है।

मैं क्या है:

x = ['Head', 'Hip', 10] 
print x[1] is 'Hip' 

मेरा प्रश्न: आप चाहे या नहीं यह एक बूलियन या एक नंबर है के लिए जांच कैसे करूं?

उत्तर

30

किसी प्रश्न का जवाब करने के लिए:

isinstance(x[0], (int, float)) 

यह जांच करता है कि x[0] टपल (int, float) में प्रकारों में से किसी का एक उदाहरण है।

आप वहां भी bool जोड़ सकते हैं, लेकिन यह आवश्यक नहीं है, क्योंकि bool स्वयं int का उप-वर्ग है।

डॉक्टर संदर्भ:


अपने वर्तमान कोड पर टिप्पणी करने के लिए आपको interning of short strings पर भरोसा नहीं करना चाहिए। आप == ऑपरेटर के साथ तार की तुलना करने की अपेक्षा की जाती:

x[1] == 'Hip' 
5
import types 
type(x) == types.BooleanType 
+0

'types.BooleanType' अजगर से हटा दिया गया था 3.' bool' बजाय प्रयोग किया जाता है। स्रोत: http://www.diveintopython3.net/porting-code-to-python-3-with-2to3.html#types – KSR

16

सबसे आसान मैं कहूँगा:

type(x) == type(True) 
+0

थोड़ा सा hacky लेकिन कोई आयात, तो +1 –

+9

हो सकता है कि सीधे 'प्रकार (x) है bool'? – lerner

3

python3 में यह होगा: type(x)==boolexample देखते हैं।

+0

मेरा दोनों में काम करता है। तर्क ज्यादातर भाषा भी है। – CurlyMo