POO, documentation et tests - TP3
Structures hétérogènes de données et tests
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() ?
Astuces
Parcourir des listes
= ["a", "b", "c", "d", "e"]
liste
# 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
= ["a", "b", "c", "d", "e"] liste
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”