Adloun

Voici une fonction censée dire si un entier est pair

Application directe du cours · niveau 1 (application) · NSI (première), chapitre 3 — Langages et programmation · Spécifier, tester, consulter une documentation

Énoncé

Voici une fonction censée dire si un entier est pair : def pair(n): return n % 2 == 0. Trouver un jeu de tests de quatre cas positifs qui passe. La fonction est-elle correcte pour les entiers négatifs ? Vérifier.

Corrigé

Le jeu de tests demandé.


def pair(n):
    return n % 2 == 0

print(pair(0), pair(2), pair(4), pair(100))     # True True True True

Quatre cas positifs, quatre succès.

Et pour les négatifs ?


print(pair(-4), pair(-3), pair(-1))             # True False False

La fonction est correcte. La raison mérite d'être connue : en Python, le reste d'une division par un entier positif est toujours positif — (-3) % 2 vaut 1, et non -1 comme en C ou en Java. Le test n % 2 == 0 reste donc juste.

Le point important n'est pas le résultat, c'est la démarche. La même fonction écrite return n % 2 == 1 pour tester l'imparité serait fausse en C sur les négatifs et juste en Python. Un jeu de tests qui ne couvre que les positifs ne dit rien des négatifs : ici il se trouve que tout va bien, ailleurs non — c'est exactement le cas de maximum_faux du cours.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.