Des accumulateurs☘
Les compteurs de la page précédente utilisent le principe d'accumulateur déjà utilisé de nombreuses fois.
On continue avec ce principe incontournable mais en accumulant des caractères ou des éléments dans une liste (plutôt qu'en accumulant des entiers par additions comme avec les compteurs).
Masque☘
Écrire un corps pour la fonction suivante:
def masque(mot, tab):
"""
mot -- de type str
tab -- liste d'entiers compris entre 0 et len(mot)-1.
renvoie une chaîne de caractères construites avec les caractères de mot
dont les indices dans mot sont donnés par tab.
Exemples:
>>> masque("cou", [0,1,0,1])
'coco'
>>> masque("macron", [0,1,3,3,4,5])
'marron'
>>> masque("pantalonnade", [1,2,1,3,6,5,11])
'anatole'
"""
Solution
def masque(mot, tab):
"""
mot -- de type str
tab -- liste d'entiers compris entre 0 et len(mot)-1.
renvoie une chaîne de caractères construites avec les caractères de mot
dont les indices dans mot sont donnés par tab.
Exemples:
>>> masque("cou", [0,1,0,1])
'coco'
>>> masque("macron", [0,1,3,3,4,5])
'marron'
>>> masque("pantalonnade", [1,2,1,3,6,5,11])
'anatole'
"""
resultat = ''
for k in tab:
resultat += mot[k]
return resultat
Compactage☘
Écrire un corps pour la fonction suivante:
def compactage(tab):
"""
tab -- liste non vide d'entiers triée en ordre croissant.
renvoie une liste de même contenu que tab mais sans doublon.
>>> compactage([2,2, 3, 3, 4,4, 4, 4, 5, 6, 6, 8])
[2, 3, 4, 5, 6, 8]
"""
Solution
def compactage(tab):
"""
tab -- liste non vide d'entiers triée en ordre croissant.
renvoie une liste de même contenu que tab mais sans doublon.
>>> compactage([2,2, 3, 3, 4,4, 4, 4, 5, 6, 6, 8])
[2, 3, 4, 5, 6, 8]
"""
resultat = [tab[0]]
for i in range(1, len(tab)):
if tab[i] != tab[i-1]:
resultat.append(tab[i])
return resultat
assert compactage([2,2, 3, 3, 4,4, 4, 4, 5, 6, 6, 8]) == [2, 3, 4, 5, 6, 8]