📂 1. Appel d'une fonction et étude de la docstring
🗂 1.1. Quotient et reste (exercice_A33.py)
🗂 1.2. Conversion décimal-binaire (exercice_A34.py)
📂 2. Construction et tests de fonctions
🗂 2.2. Test d'une fonction : les tests unitaires
🗂 2.3. Conversion binaire-décimal (exercice_A35.py)
Nous avions défini la fonction division()
.
Elle est redonnée ci-dessous avec sa docstring (qui fait partie des éléments qu'il faudra savoir écrire dans une fonction). Vous devez la modifier de façon à ce qu'elle affiche le quotient et le reste de la division du nombre 100 par tous les nombres inférieurs ou égal à 50.
Les résultats devront apparaître sous la forme suivante :
Pour faire cet exercice, il faut d'abord avoir vu la partie B2 du cours sur les entiers relatifs et leur représentation en complément à deux. Si ce n'est pas le cas, sautez cet exercice et revenez y quand le cours aura été vu.
Compléter le script suivant de façon à ce qu'il utilise la fonction decToBin()
pour afficher la conversion en binaire des entiers relatifs de -12710 à +12710.
Bien étudier auparavant la docstring de cette fonction !
Le but va être dans cette partie de réécrire quelques scripts "conventionnels" en les rendant "fonctionnels" ( au sens de "ils devront utiliser une fonction" ).
Dans chaque situation, vous réfléchirez aux spécifications de la fonction, vous la définirez complètement, vous écrirez sa docstring et vous la testerez.
La notion de preuve et de tests est fondamentale en informatique : certains systèmes ne peuvent se contenter d'un fonctionnement approximatif mais doivent au contraire être robustes, c'est à dire fonctionner correctement dans toutes les situations possibles.
Pour prouver qu'une fonction fait toujours correctement le travail pour lequel elle est prévue, il faudrait théoriquement la tester avec tous les arguments possibles et imaginables; c'est bien entendu impossible...
On peut cependant se contenter de tester son bon fonctionnement sur quelques arguments bien choisis : on parle alors de tests unitaires
En Python, on peut utiliser le module doctest
pour réaliser ces tests unitaires; il permet d'indiquer dans la docstring de la fonction des tests à réaliser et le résultat attendu si elle fonctionne bien.
Si ce n'est pas le cas, un message est alors affiché signalant qu'il faut corriger son code !
Voici un exemple avec la fonction division()
:
Un test unitaire correspond aux 3 chevrons ( >>> ) suivis d'un espace puis de l'appel de la fonction avec des arguments particuliers; on indique en dessous le résultat attendu.
Si les tests unitaires sont validés, rien ne s'affiche. Par contre, en cas de mauvais fonctionnement, un ou plusieurs avertissement(s) s'affichent indiquant quel(s) test(s) n'ont pas été réussi(s).
Exemple avec la fonction précédente buguée :
Une méthode de développement appelé TDD préconise d'ailleurs d'écrire D'ABORD des tests avant même le code d'une fonction...
Vous essayerez de procéder ainsi !
Le code ci-dessous permet la conversion d'un nombre en représentation binaire vers la base 10. Vous réécrirez ce script en y définissant une fonction binTodec()
qui réalise la conversion.
Rédigez correctement sa docstring après avoir analysé les entrées et les sorties nécessaires au bon fonctionnement de la fonction. Vous testerez le bon fonctionnement de la fonction avec des tests bien choisis !
Le script ci-dessous permet de convertir une température de degrés Celsius en Fahrenheit ou l'inverse selon le choix de l'utilisateur :
Réécrire le script avec une unique fonction conv()
qui retourne la conversion Celsius → Fahrenheit, ou Fahrenheit → Celsius.
Ecrire et tester deux fonctions :
boolean
, ne pouvant prendre que deux valeurs,
soit la valeur True ( = VRAI ), soit la valeur False ( = FAUX ).
Pensez à tester d'abord le bon fonctionnement de la première fonction avant de passer à la suite !