2015-01-29 5 views
9

में शून्य नहीं है, तो अक्सर मैं जांच कर रहा हूं कि कोई संख्या चर numberif number के साथ कोई मान है लेकिन कभी-कभी संख्या शून्य हो सकती है। तो मैं इसे if number or number == 0 द्वारा हल करता हूं।जांचें कि क्या मान शून्य है या पाइथन

क्या मैं इसे एक बेहतर तरीके से कर सकता हूं? मुझे लगता है कि यह जांचने के लिए थोड़ा बदसूरत है कि मूल्य शून्य से अलग है या नहीं।

संपादित

मैं अगर मूल्य

def is_number(s): 
    try: 
     int(s) 
     return True 
    except ValueError: 
     return False 

के साथ एक संख्या है, लेकिन फिर मैं अभी भी if number and is_number(number) के साथ जांच करने की आवश्यकता होगी मैं बस की जांच कर सकता है।

+0

आपका शीर्षक 'None' नहीं या के लिए पूछता है एक संख्या। क्या आप कह रहे हैं कि अब आपके पास कई प्रकार हैं? –

+0

आपका 'is_number()' परीक्षण स्ट्रिंग्स के लिए पूर्णांक में परिवर्तनीय मानों के साथ काम करेगा। यह कुछ अलग है। –

+0

यह भी देखें [ऑब्जेक्ट एक संख्या है या नहीं, यह जांचने के लिए सबसे अधिक पाइथोनिक तरीका क्या है?] (Https://stackoverflow.com/a/46324571/562769) –

उत्तर

24

तो numberNoneया एक नंबर हो सकता है, और आप के बजाय None पर 0, फिल्टर शामिल करना चाहता: प्रकार के किसी भी संख्या, प्रकार के लिए परीक्षण किया जा सकता है

if number is not None: 

तो number; यदि आप एक टपल साथ प्रकार के सिर्फ int या एक संयोजन के लिए परीक्षण कर सकते हैं:

if isinstance(number, int): # it is an integer 
if isinstance(number, (int, float)): # it is an integer or a float 

या शायद:

from numbers import Number 

if isinstance(number, Number): 

पूर्णांकों, तैरता है, जटिल संख्याओं, Decimal और Fraction वस्तुओं के लिए अनुमति देने के लिए।

+1

लेकिन मैं चाहता हूं कि मेरा कथन सत्य के रूप में मूल्यांकन करें यदि मान है शून्य नहीं है या मान शून्य है। – Jamgreen

+0

@ जमग्रीन: दाएं, फिर इसके बजाय 'none' को बाहर करें। बेशक –

+0

। धन्यवाद .. क्या होगा अगर मुझे यह जानने में दिलचस्पी है कि यह एक संख्या है या नहीं? मैंने अपना प्रश्न – Jamgreen

5

शून्य और कोई भी दोनों ब्लॉक के लिए समान नहीं माना जाता है, नीचे कोड को ठीक काम करना चाहिए।

if number or number==0: 
    return True 
0

आप यह जांच सकते हैं कि इसे दशमलव में परिवर्तित किया जा सकता है या नहीं। हाँ, तो इसकी एक नंबर

from decimal import Decimal 

def is_number(value): 
    try: 
     value = Decimal(value) 
     return True 
    except: 
     return False 

print is_number(None) // False 
print is_number(0)  // True 
print is_number(2.3) // True 
print is_number('2.3') // True (caveat!) 
0

सरल तरीके हैं:

h = '' 
i = None 
j = 0 
k = 1 
print h or i or j or k 

प्रिंट होगा 1

print k or j or i or h 

प्रिंट होगा 1

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