Section accents et casse, questions 1,2 et 3

This commit is contained in:
jeanloup 2015-01-27 11:24:38 +01:00
parent 00c1ef23a2
commit adca0b9bb5

View file

@ -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