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.