Ce TD est noté.
- Il est réalisé en durée limité: 2h
- L’utilisation des notes de cours est autorisées, ainsi que vos fichiers de TP disponibles sur votre machine.
- Internet n’est pas autorisé.
- En cas de blocage, vous pouvez demander de l’aide.
- Les exercice 2 et 3 ne sont pas indépendants.
Exercice 1. Lecture de codes, écriture de documentation (4pts)
Proposez un nom de fonction et une documentation (incluant des doctest et la complexité) pour les fonctions suivantes:
def f1(a, n):
if n == 0:
return 1
return a * f1(a, n-1)
def f2(L):
= 0
a for e in L:
+= e
a return a/len(L)
Exercice 2. replace (6pts)
La fonction replace
des chaînes de caractères prend en
argument trois chaînes de caractères u
, p
et
r
et remplace toutes les occurrence de p
dans
u
par r
.
Par exemple:
"J'aime les pâtes à la carbonara", "carbonara", "bolognese") replace(
Retourne la chaîne
"J'aime les pâtes à la bolognese"
.
Attention, il faut substituer toutes les occurrences du mot. Par exemple:
"J'aime les pâtes à la carbonara, la carbonara c'est ma vie.", "carbonara", "bolognese") replace(
retourne la chaîne
"J'aime les pâtes à la bolognese, la bolognese c'est ma vie"
.
- La version de base de Python peut être utilisé ainsi (pour comparer avec votre implémentation)
"J'aime les pâtes à la carbonara".replace("carbonara", "bolognese")
pour obtenir le même résultat.
Écrire une version impérative de replace. (2pts)
Écrire une version récursive de replace. (2pts)
Proposez une analyse de complexité d’une de vos implémentations. (2pts)
Exercice 3. Confidentiel (10pts)
- Écrire une fonction
confidentiel
qui prend en argument (2pts):
- une chaine de caractères
u
- une liste de chaines de caractères
L
et qui retourne une chaine v
où pour toutes chaines
w
de L
, ses occurrences dans u
sont remplacées par une chaine contenant uniquement le symbole
#
de même taille len(w)
.
Par exemple:
"James Bond a envoyé une lettre à son contact Igor Paluczenko", ["James Bond", "Igor Paluscenko"]) confidentiel(
Retourne
"########## a envoyé une lettre à son contact ###############"
- Écrire une fonction
confidentiel2
qui fait la même chose mais cache les chaînes y compris si elles sont écrites avec des lettres minuscules ou majuscules. (4pts)
Par exemple:
"james bONd a envoyé une lettre à son contact Igor palusCzenko", ["James Bond", "Igor Paluscenko"]) confidentiel(
Retourne
"########## a envoyé une lettre à son contact ###############"
- Proposez une analyse de complexité de votre fonction
confidentiel2
, en justifiant. (4pts)
Compiled the: mer. 04 sept. 2024 12:50:02 CEST