POO, documentation et tests - TP3

Structures hétérogènes de données et tests
Author

Ludovic Deneuville

Introduction

Créer l’arborscence

Vous pouvez créer chaque dossier et fichier à la main, ou utiliser dans un terminal Git Bash les commandes ci-dessous (mkdir : make directory):

# Sur la VM ensai
mkdir -p /p/Cours1A/IPOO/TP3/Exercice_{1..4}/

# Sur un Datalab Onyxia
mkdir -p /home/onyxia/work/IPOO/TP3/Exercice_{1..4}/

Moodle

Rappels

Fonction - Template

def ma_fonction(param1, param2=valeur_par_defaut) -> type_retour:
    """description_courte

    description_longue

    Parameters
    ----------
    param1 : type (str, int, float, list...)
        description_param1
    param2 : type
        description_param2

    Returns
    -------
    type_retour
        description_retour

    Examples
    --------
    >>> 1+1
    2
    >>> print("abc")
    abc
    >>> ma_fonction(xxx, yyy)
    valeur_esperee
    """
    return None

TU avec pytest - Modèle

import pytest
from mon_fichier import ma_fonction

@pytest.mark.parametrize(
    'param1, param2, resultat_attendu',
    [
        (1,       1,                2),
        (1,       2,                3),
        (2,       2,                4)
    ]
)
def test_ma_fonction(param1, param2, resultat_attendu):
    assert ma_fonction(param1, param2) == resultat_attendu
  • Lancer les TU : python -m pytest --doctest-modules

1 Exercices

1.1 Exercice 1

      • dans votre Explorer à gauche apparait l’arborescence des dossiers et fichiers de Exercice_1

Quel est le gros souci dans les TU de sous_liste() ?

Parcourir des listes

liste = ["a", "b", "c", "d", "e"]

# Par index
for i in range(0, len(liste)):
    print(i, liste[i])

# Par valeurs
for v in liste:
    print(v)

# Combiner index et valeurs
for i, v in enumerate(liste):
    print(f"index : {i}, valeur : {v}")

Slicing

liste = ["a", "b", "c", "d", "e"]
Opération Résultat Explication
liste[2:] ['c', 'd', 'e'] De l’index 2 jusqu’à la fin
liste[:3] ['a', 'b', 'c'] Du début à l’index 2 (3 exclus)
liste[1:4] ['b', 'c', 'd'] De l’index 1 à 3 (4 exclus)
liste[::2] ['a', 'c', 'e'] Un élément sur deux
liste[1::2] ['b', 'd'] Un élément sur deux en commençant à l’index 1
liste[-3:] ['c', 'd', 'e'] Les trois derniers éléments
liste[:-2] ['a', 'b', 'c'] Tout sauf les deux derniers
liste[::-1] ['e', 'd', 'c', 'b', 'a'] Inversion de la liste
liste[::-2] ['e', 'c', 'a'] Inversion avec un pas de 2

Importer un module

from mon_module import ma_fonction signifie “depuis le fichier mon_module.py, on importe la fonction ma_fonction

1.2 Exercice 2