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

  1. 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
  1. 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:

  1. Recherche d’un extremum, au choix: maximum ou minimum d’un tableau.
  2. 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

  1. 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.

  2. 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 log2(16)=4\log_2(16) = 4; log2(256)=8\log_2(256) = 8. Expliquer ce que calcule cette fonction.

  3. Rechercher dans la documentation de la librairie pandas plusieurs méthodes permettant d’itérer sur les valeurs d’une Dataframe.