Noircir un texte⚓︎
Avant de rendre public des dossiers sensibles, il arrive que certains organismes les « anonyment » en entier ou partiellement.
Dans le cadre de cet exercice, nous ne programmons qu'une version simpliste : « noircir » un texte consiste à remplacer toutes les caractères alphabétiques par un caractère occultant, comme par exemple ▮
.
Le texte L'espion était J. Bond
devient alors ▮'▮▮▮▮▮▮ ▮▮▮▮▮ ▮. ▮▮▮▮
.
On demande d'écrire la fonction noircir
qui prend en argument une chaîne de caractères texte
ainsi que le caractère occultant noir
et renvoie le même texte « noirci » du début à la fin.
Astuce
Si s
est une chaîne de caractères, l'instruction s.isalpha()
renvoie True
si s
n'est composée que de caractères alphabétiques.
Ainsi "é".isalpha()
est évalué à True
, "Bonjour !".isalpha()
est évalué à False
.
Exemples
>>> noircir("", "*")
''
>>> noircir("L'espion était J. Bond", "▮")
"▮'▮▮▮▮▮▮ ▮▮▮▮▮ ▮. ▮▮▮▮"
>>> noircir("L'espion était J. Bond", "_")
"_'______ _____ _. ____"
>>> noircir(";-)", "▮")
';-)'
def noircir(texte, noir):bksl-nl ...bksl-nlbksl-nlbksl-nl# Testsbksl-nlassert noircir("", "py-str") == ""bksl-nlassert noircir("L'espion était J. Bond", "▮") == "▮'▮▮▮▮▮▮ ▮▮▮▮▮ ▮. ▮▮▮▮"bksl-nlassert noircir("L'espion était J. Bond", "py-und") == "py-und'py-undpy-undpy-undpy-undpy-undpy-und py-undpy-undpy-undpy-undpy-und py-und. py-undpy-undpy-undpy-und"bksl-nlassert noircir(";-)", "▮") == ";-)"bksl-nlassert noircir("py-str", "py-str") == "py-str"bksl-nlbksl-nldef noircir(texte, noir):bksl-nl resultat = ""bksl-nl for caractere in texte:bksl-nl if caractere.isalpha():bksl-nl resultat += noirbksl-nl else:bksl-nl resultat += caracterebksl-nlbksl-nl return resultatbksl-nlbksl-nl
A
La fonction noircir
effectue les calculs sur tous les caractères de texte
, on n'utilise pas leurs indices dans la chaîne. On peut donc directement parcourir les caractères de la chaîne avec la boucle for caractere in texte
.
Il est aussi possible d'écrire cette fonction en utilisant une approche plus « fonctionnelle » :
def noircir(texte, noir):
return "".join([noir if c.isalpha() else c for c in texte])
Z