HOWTO · Python

Vérifier si un nombre est pair ou impair en Python

Nous pouvons utiliser l'opérateur de module % ou l'opérateur AND au niveau du bit & pour vérifier si un nombre est pair ou impair en Python.

Sur cette page

Dans Python, vérifiez si un entier est pair en testant si num % 2 est égal à 0; sinon, il est impair. Un entier pair est divisible par deux sans reste, tandis qu’un entier impair laisse un reste égal à un. L’opérateur modulo est le choix le plus clair par défaut pour cette tâche. Le ET bit à bit avec 1 est une autre option réservée aux entiers.

Vérifier la parité avec l’opérateur modulo

L’opérateur modulo % donne le reste d’une division. Pour un entier, la division par 2 laisse un reste de 0 si la valeur est paire et de 1 si elle est impaire. Cette règle s’applique aussi aux entiers négatifs dans Python : par exemple, -4 % 2 vaut 0, tandis que -3 % 2 vaut 1.

Exécutez cet exemple :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

def check_parity(num):
    if num % 2 == 0:
        print("even")
    else:
        print("odd")


check_parity(22)

L’exécution fournie affiche even pour check_parity(22). La fonction teste directement la divisibilité et affiche une étiquette; remplacez 22 par l’entier que vous souhaitez vérifier. Elle attend un entier, et non une valeur décimale comme 2.5. L’étiquette affichée, even, reste en anglais.

Vérifier la parité avec l’opérateur ET bit à bit

L’opérateur ET bit à bit & compare les bits correspondants de deux entiers. Dans la représentation binaire d’un entier, le bit de poids faible vaut 0 pour une valeur paire et 1 pour une valeur impaire. Ainsi, num & 1 vaut 0 pour un entier pair et 1 pour un entier impair. Python effectue ici une opération bit à bit sur des entiers; il ne crée pas d’abord une chaîne binaire.

Par exemple, le bit de poids faible de 22 vaut 0, donc 22 & 1 vaut 0. Pour 33, ce bit vaut 1, donc 33 & 1 vaut 1. La fonction suivante utilise ce résultat comme condition :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

def check_parity(num):
    if num & 1 == 0:
        print("even")
    else:
        print("odd")


check_parity(33)

L’exécution fournie affiche odd pour check_parity(33). L’expression num & 1 est évaluée avant la comparaison d’égalité; la condition vérifie donc si le bit de poids faible est nul. Comme pour la version avec modulo, transmettez un entier à la fonction. L’étiquette affichée, odd, reste en anglais.

Privilégier l’opérateur modulo pour la lisibilité

Les deux expressions répondent à la question de la parité pour les entiers : num % 2 == 0 utilise le reste, tandis que num & 1 == 0 teste le bit de poids faible. La forme avec modulo exprime généralement l’intention plus directement, surtout pour les lecteurs qui ne travaillent pas avec les bits. Utilisez-la pour les vérifications de parité ordinaires, sauf si les opérations bit à bit s’intègrent déjà au code environnant ou si le comportement au niveau des bits est lui-même pertinent.

La forme bit à bit est une solution valable, mais elle n’est pas nécessaire comme optimisation dans du code Python courant. Choisissez une forme et utilisez-la de manière cohérente; veillez aussi à préciser le type d’entrée : ces tests portent sur la parité des entiers, et non sur la divisibilité mathématique par deux d’une valeur numérique quelconque. Pour une fonction qui accepte une entrée externe, validez ou convertissez cette entrée avant d’appeler le test de parité; la stratégie de conversion dépend de l’application et ne doit pas être dissimulée dans l’expression de parité.