web-dev-qa-db-fra.com

Vérifier si la valeur est zéro ou non nulle en python

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.

Modifier

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).

9
Jamgreen

Si number peut être Noneou 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.

29
Martijn Pieters

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
8
Amey Jadiye

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!)
0
Saiteja Parsi

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

0
Luciano Pinheiro