Ex doc test
🔹 PARTIE 1 – Compréhension (savoir ce qu’ils font)
Exercice 1 – Docstring
Explique à quoi sert une docstring et où elle peut être placée dans un programme Python.
- À quoi sert une docstring ?
- Où peut-on en écrire ?
- Comment afficher une docstring dans Python ?
Exercice 2 – Assert
Observe le code suivant :
def racine(x):
assert x >= 0, "x doit être positif"
return x ** 0.5
- À quoi sert la ligne avec
assert? - Que se passe-t-il si
x = -4?
Exercice 3 – Doctest
Observe cette docstring :
def carre(x):
"""
>>> carre(3)
9
>>> carre(-2)
4
"""
return x * x
- À quoi servent les lignes commençant par
>>>? - Que fait le module
doctest?
🔹 PARTIE 2 – Analyse critique (dire si c’est bien écrit)
Exercice 4 – Docstring correcte ou non ?
Pour chaque docstring, indique si elle est correcte, incomplète ou mal écrite, et explique pourquoi.
A
def addition(a, b):
"""Addition."""
return a + b
B
def division(a, b):
"""
Divise a par b.
Args:
a (float): numérateur
b (float): dénominateur
Returns:
float: résultat
"""
return a / b
C
def moyenne(liste):
# calcule la moyenne
return sum(liste) / len(liste)
Exercice 5 – Assert bien utilisé ?
Indique si l’utilisation de assert est appropriée ou non.
A
def surface_carre(c):
assert c > 0
return c * c
B
age = int(input("Âge : "))
assert age >= 0
print("Bienvenue")
C
def moyenne(notes):
assert len(notes) > 0
return sum(notes) / len(notes)
Exercice 6 – Doctest valide ?
Dis si les doctests suivants fonctionneront correctement.
A
def cube(x):
"""
>>> cube(2)
8
"""
return x ** 3
B
def division(a, b):
"""
>>> division(1, 3)
0.3333333333333333
"""
return a / b
C
def affiche():
"""
>>> print("a\nb")
a
b
"""
print("a\nb")
🔹 PARTIE 3 – Rédaction guidée
Exercice 7 – Écrire une docstring
Complète la fonction suivante en ajoutant une docstring claire et complète :
def perimetre_rectangle(longueur, largeur):
return 2 * (longueur + largeur)
La docstring doit préciser :
- le rôle de la fonction
- les paramètres
- la valeur de retour
Exercice 8 – Ajouter des assert
Ajoute des assert pour vérifier que :
nest un entiernest positif ou nul
def factorielle(n):
res = 1
for i in range(2, n + 1):
res *= i
return res
Exercice 9 – Écrire un doctest simple
Ajoute un doctest à cette fonction pour tester au moins deux cas :
def est_pair(n):
return n % 2 == 0
🔹 PARTIE 4 – Exercices complets (docstring + assert + doctest)
Exercice 10 – Fonction complète
Complète entièrement la fonction suivante :
def maximum(a, b):
pass
Contraintes :
- docstring avec description + exemples doctest
- assert pour vérifier que
aetbsont des nombres - renvoyer le plus grand des deux
Exercice 11 – Gestion d’erreur + doctest
Écris une fonction inverse(x) qui :
- renvoie
1 / x - lève une erreur si
x == 0 - contient un doctest vérifiant le bon fonctionnement et l’erreur
Exercice 12 – Lecture et correction
Le code suivant contient au moins 3 erreurs ou mauvaises pratiques. Identifie-les et propose une correction.
def racine(x):
"""
>>> racine(-4)
2
"""
assert x >= 0
return x ** 0.5