Section accents et casse, questions 1,2 et 3
This commit is contained in:
parent
00c1ef23a2
commit
adca0b9bb5
|
@ -188,7 +188,7 @@ def sont_anagrammes2(chaine1, chaine2):
|
|||
|
||||
question(3)
|
||||
|
||||
def sont_anagrammes2(chaine1, chaine2):
|
||||
def sont_anagrammes3(chaine1, chaine2):
|
||||
""" Prédicat, renvoie True si chaine1 et chaine2 sont des anagrammes, False sinon
|
||||
str, str -> bool
|
||||
CU: chaine1 et chaine2 sont des str
|
||||
|
@ -210,10 +210,48 @@ section('Casse et accentuation')
|
|||
|
||||
question(1)
|
||||
|
||||
EQUIV_NON_ACCENTUE = {'é':'e', 'è':'e', 'à':'a', 'ç':'c', 'ï':'i', 'î':'i', 'ô':'o', 'ë':'e', 'ê':'e', 'â':'a', 'û':'u'}
|
||||
|
||||
question(2)
|
||||
|
||||
def bas_casse_sans_accent(chaine):
|
||||
""" str -> str, renvoie une chaine qui est l'équivalent non accentuée et minuscule de la chaine passée en paramètre
|
||||
CU: chaine est un str
|
||||
"""
|
||||
|
||||
assert(type(chaine)==str)
|
||||
|
||||
chaineCpy=chaine.lower()
|
||||
|
||||
ret = ""
|
||||
|
||||
for i in chaineCpy:
|
||||
if i in EQUIV_NON_ACCENTUE:
|
||||
ret += EQUIV_NON_ACCENTUE[i]
|
||||
else:
|
||||
ret += i
|
||||
|
||||
return ret
|
||||
|
||||
question(3)
|
||||
|
||||
def sont_anagrammes_sans_casse_ni_accent(chaine1, chaine2):
|
||||
""" Prédicat, renvoie True si chaine1 et chaine2 sont des anagrammes, False sinon, ne tient pas compte de la casse ou des accents
|
||||
str, str -> bool
|
||||
CU: chaine1 et chaine2 sont des str
|
||||
"""
|
||||
|
||||
assert(type(chaine1)==str and type(chaine2)==str)
|
||||
|
||||
if len(chaine1) != len(chaine2): # Si la longueur est différente ca ne peut pas être des anagrammes
|
||||
return False
|
||||
|
||||
chaine1Cpy = bas_casse_sans_accent(chaine1)
|
||||
chaine2Cpy = bas_casse_sans_accent(chaine2)
|
||||
|
||||
return sont_anagrammes2(chaine1Cpy, chaine2Cpy)
|
||||
|
||||
|
||||
|
||||
partie('Recherche d\'anagrammes') # Jean-loup
|
||||
|
||||
|
|
Reference in a new issue