Exercices

Chapitre 8: Mise au point d'un programme

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()

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]) == True
   assert appartient(6, [5, 4, 1, 2, 3]) == False
  1. Compléter le jeu de tests avec des cas limites: liste vide, types de données différents...

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

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.