Souvent, je vérifie si une variable numérique number
a une valeur avec if number
mais le nombre peut parfois être zéro. Je résous donc ceci par if number or number == 0
.
Puis-je le faire de manière plus intelligente? Je pense que c'est un peu moche de vérifier si la valeur est zéro séparément.
Je pense que je pourrais juste vérifier si la valeur est un nombre avec
def is_number(s):
try:
int(s)
return True
except ValueError:
return False
mais alors je devrai toujours vérifier avec if number and is_number(number)
.
Si number
peut être None
ou un nombre et que vous souhaitez inclure 0
, filtrez sur None
à la place:
if number is not None:
Si number
peut être un nombre quelconque de types, testez le type; vous pouvez tester uniquement int
ou une combinaison de types avec un tuple:
if isinstance(number, int): # it is an integer
if isinstance(number, (int, float)): # it is an integer or a float
ou peut-être:
from numbers import Number
if isinstance(number, Number):
pour permettre les entiers, les flottants, les nombres complexes, les objets Decimal
et Fraction
.
Zéro et Aucun traités tous les deux comme identiques pour if block, code ci-dessous devrait fonctionner correctement.
if number or number==0:
return True
Vous pouvez vérifier s'il peut être converti en décimal. Si oui, alors c'est un numéro
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!)
La manière la plus simple:
h = ''
i = None
j = 0
k = 1
print h or i or j or k
Imprimera 1
print k or j or i or h
Imprimera 1