POO, documentation et tests - TP1
1 Créer l’arborscence
└── P
└── Cours1A
└── IPOO
├── TP1
│ ├── Exercice_1
│ │ └── ex.py
│ ├── ...
│ └── Exercice_7
│ └── ex.py
├── TP2
│ ├── Exercice_1
│ │ └── ex.py
│ ├── ...
Pour prendre la bonne habitude de bien ranger vos fichiers, vous allez créer l’arborscence ci-dessus. Vous pouvez créer chaque dossier et fichier à la main, ou utiliser les commandes ci-dessous (mkdir : make directory):
-
- VM ou machine perso : sur le bureau > clic droit > Git Bash here
- Datalab : Terminal > New Terminal (ou CTRL + ù)
-
mkdir -p IPOO/TP1/Exercice_{1..7}/ && touch IPOO/TP1/Exercice_{1..7}/ex.py
- dans Git Bash : clic droit > Paste ou MAJ + INSER
Il est important de stocker vos fichiers dans votre lecteur P:
et pas sur votre bureau ou votre disque C: car vos fichiers risqueraient de disparaitre !
2 Fonctions
Les fonctions permettent de :
- réutiliser du code (éviter d’écrire deux fois la même chose)
- simplifier
- organiser
2.1 Définition
Parallèle avec les mathématiques, par exemple : \(f : x, y \mapsto x^2 + y + 1\)
- nom de la fonction : f
- paramètres d’entrée : x, y
- sortie : \(x^2 + y + 1\)
En Python pour définir la fonction :
def f(x, y):
return x**2 + y + 1
2.2 Utilisation
En maths : \(f(3, 4) = 3^2 + 4 + 1 = 14\)
En Python, on ferait de même en appelant la fonction :
# Appel par positions des paramètres
= f(3, 4)
resultat print(resultat)
# Appel par noms des paramètres
= f(x=3, y=4) resultat
2.3 Template
Voici un modèle que vous pouvez utiliser pour documenter vos fonctions.
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
Il est tout à fait possible pour une fonction de :
- ne prendre aucun paramètre en entrée
- ne rien retourner (None)
3 Exercices
Visual Studio Code (VS Code) est un éditeur de code source développé par Microsoft, gratuit et open-source, conçu pour être léger et performant. Il est compatible avec de très nombreux langages de programmation : Python, R, Java, JavaScript, C++…
3.1 Exercice 1
Rappels : le terminal Git Bash et les commandes Unix
Vous pouvez maintenant écrire et éxécuter du code Python.
Collections usuelles
Type de Donnée | Ordonné | Mutable | Doublon |
---|---|---|---|
list | ✔ | ✔ | ✔ |
dict | ✔ | ||
tuple | ✔ | ✔ | |
set | ✔ |
Fonctions et méthodes
- fonction
sorted(liste)
- paramètre : une liste
- retourne : une nouvelle liste triée
- méthode
liste.sort()
- paramètre : aucun
- s’applique à l’objet liste
- retourne : rien (par contre elle modifie la liste initiale)
3.2 Exercice 2
print("|{:{}{}}|".format('abc', '<', 14))
print("|{:{}{}}|".format('abc', '>', 10))
print("|{:{}{}}|".format('abc', '^', 7))
Avec des f-strings :
= 'abc'
chaine
print(f"|{chaine:<8}|")
print(f"|{chaine:>12}|")
print(f"|{chaine:^16}|")
4 Aides
4.1 Parcours de listes
La fonction enumerate() permet de boucler sur une liste en utilisant à la fois l’index et la valeur des éléments.
= ["Anaïs", "Benoit", "Camille"]
liste
# Par valeurs
for v in liste:
print(v)
# Par index
for i in range(len(liste)):
print(liste[i])
# Index et valeurs
for i, v in enumerate(liste):
print(f"index {i} : valeur {v}")
Si vous avez une erreur d’index, vous pouvez encapsuler votre code dans un bloc try/except.
try:
if liste1[i] > 0:
...except IndexError:
print(f"Index error : {i}")
4.2 Parcours de dictionnaires
= {"d":"Dominique", "e":"Eva", "f":"Fernande"}
dico
# Par clés
for k in dico.keys():
print(f"{k} : {dico[k]}")
# Par valeurs
for v in dico.values():
print(v)
# Clés et valeurs
for k, v in dico.items():
print(f"clé {k} : valeur {v}")