Adloun

Trouver dans la documentation de Python la fonction qui renvoie…

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

Énoncé

Trouver dans la documentation de Python la fonction qui renvoie simultanément le quotient et le reste d'une division euclidienne. Écrire son prototype et un jeu de tests.

Corrigé

La fonction est divmod, dans les fonctions natives — donc sans import.

Prototype. divmod(a, b) renvoie le couple (a // b, a % b). Précondition : b non nul. Postcondition : a == b * q + r.

Jeu de tests, écrit comme une propriété.


for a in range(-30, 31):
    for b in range(1, 20):
        q, r = divmod(a, b)
        assert a == b * q + r and 0 <= r < b

Les cas passent.

Contrôles : divmod(17, 5) rend (3, 2) ; divmod(-17, 5) rend (-4, 3) — et non (-3, -2). Python arrondit le quotient vers le bas, ce qui garantit un reste positif : c'est la division euclidienne des mathématiques, et c'est ce que la postcondition exprime.

Ce que la documentation seule apprend : le fait que divmod rende un couple, et non deux valeurs — la notion de p-uplet, objet du chapitre 4. Et le fait que la question « les bornes sont-elles incluses ? » de la méthode du cours a ici une réponse nette : inclus, exclu.

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.