Exercices
Chapitre 8: Mise au point d’un programme
1 Spécification et tests de la division euclidienne
Copier le code suivant dans un notebook et complétez-le en ajoutant le prototype et les commentaires.
def division_euclidienne(a, b):
""" Ecrire la spécification de la fonction
Arguments
---------
Returns
-------
"""
# Ajouter des commentaires pour expliquer
if b <= 0 or a < 0 or type(a) != int or type(b) != int:
return -1
if a == 0:
return (0, 0)
# mes commentaires ici sur une ligne
r = a
q = 0
while (r >= 0):
r = r - b
q = q + 1
return (q-1, r+b)
# Tests
def test_division_euclidienne():
# Ajouter des commentaires pour expliquer
# quelles sont les vérifications effectuées
assert division_euclidienne(10, 2) == (5, 0)
assert division_euclidienne(2, 10) == (0, 2)
assert division_euclidienne(37, 3) == (12, 1)
# Verifications d'erreurs
assert division_euclidienne(-10, 7) == -1
assert division_euclidienne(10, -7) == -1
assert division_euclidienne(10.3, 4) == -1
assert division_euclidienne(11, 3.5) == -1
assert division_euclidienne(3, 0) == -1
# ...
assert division_euclidienne(0, 3) == (0, 0)
assert division_euclidienne(0, 0) == -1
# Lancement du test
test_division_euclidienne()
2 Créer est prototyper une fonction qui satisfait à des tests
- Créer et prototyper une fonction
appartient()
qui indique si un élément est présent dans une liste, et qui passe le jeu de tests suivants:
def test_appartient():
assert appartient(2, [5, 4, 1, 2, 3]) is True
assert appartient(6, [5, 4, 1, 2, 3]) is False
- Compléter le jeu de tests avec des cas limites: liste vide, types de données différents…
3 Algorithmes classiques
Reprenez les algorithmes classiques du chapitre 1 de la partie 8: et les implémenter sous forme de fonctions prototypées et testées:
- Recherche d’un extremum, au choix: maximum ou minimum d’un tableau.
- Calcul d’une moyenne des valeurs d’un tableau.
Attention: il conviendra d’écrire l’algorithme de parcours du tableau et de ne pas utiliser les méthodes prédéfinies dans python max
, min
…
4 Recherche dans une documentation
Rechercher dans la documentation du module
random
comment créer un dé numérique qui renvoie de façon équiprobable les valeurs entières de 1 à 6. Tester la fonction pour vérifier son fonctionnement.Rechercher dans la documentation du module
math
comment calculer le logarithme en base 2 d’un nombre. Tester la fonction pour vérifier son fonctionnement: p.ex ; . Expliquer ce que calcule cette fonction.Rechercher dans la documentation de la librairie
pandas
plusieurs méthodes permettant d’itérer sur les valeurs d’uneDataframe
.