diff --git a/tp1.py b/tp1.py index db2df373790317974382612b74ed2cc7de9a6b14..5a7f536fc1f35f3ff70410a729e85fc0d31f04cf 100644 --- a/tp1.py +++ b/tp1.py @@ -1,130 +1,163 @@ -#nom:gantchou koffi -#mi13 -# anagrammes -# 16/01 -#METHODE SPLIT - - -#2 la methode split supprime l'element pris en parametre dans la chaine -# >>> s= "la méthode split est parfois bien utile" -# >>> s.split(' ') -# ['la', 'méthode', 'split', 'est', 'parfois', 'bien', 'utile'] -# >>> s.split('e') -# ['la méthod', ' split ', 'st parfois bi', 'n util', ''] -# >>> s.split('é') -# ['la m', 'thode split est parfois bien utile'] -# >>> s.split() -# ['la', 'méthode', 'split', 'est', 'parfois', 'bien', 'utile'] -# >>> s.split('') -# Traceback (most recent call last): -# File "<stdin>", line 1, in <module> -# ValueError: empty separator -# >>> s.split('split') -# ['la méthode ', ' est parfois bien utile'] - -#3 la methode split ne modifie pas la chaine a laquelle elle s'applique - -#METHODE JOIN -# la methode join ne modifiie pas la chaine a laquelle elle s'applique - - -#la methode sort ne s'applique que sur des listes -# de meme que join - -def join(carac:str,l:list[str])->str: - """ à_remplacer_par_ce_que_fait_la_fonction - - Précondition : - Exemple(s) : - $$$ join('.', ['raymond', 'calbuth', 'ronchin', 'fr']) - 'raymond.calbuth.ronchin.fr' - - """ - res='' - for i in range(len(l)-1): - res+=l[i]+carac - res=res+l[len(l)-1] - - return res - -def sort(s: str) -> str: - """ - Renvoie une chaîne de caractères contenant les caractères de `s` triés dans l'ordre croissant. - - Précondition: aucune - - Exemples: - - $$$ sort('timoleon') - 'eilmnoot' - """ - l=list(s) - l.sort() - v="".join(l) - return v - -def sont_anagrammes(s1: str, s2: str) -> bool: - """ - Renvoie True si s1 et s2 sont anagrammatiques, False sinon. - - Précondition: aucune - - Exemples: - - $$$ sont_anagrammes('orange', 'organe') - True - $$$ sont_anagrammes('orange','Organe') - False - """ - anag1=sort(s1) - anag2=sort(s2) - return anag1==anag2 - -def sont_anagrammes2(s1:str,s2:str)->bool: - """ à_remplacer_par_ce_que_fait_la_fonction - - Précondition : - Exemple(s) : - $$$ sont_anagrammes2('orange', 'organe') - True - $$$ sont_anagrammes2('orange','Organe') - False - - """ - dict1={} - dict2={} - for elt in s1: - if elt in dict1: - dict1[elt]=dict1[elt]+1 - else: - dict1[elt]=1 - - for elm in s2: - if elm in dict2: - dict2[elm]=dict2[elm]+1 - else: - dict2[elm]=1 - return dict1==dict2 - -def sont_anagrammes3(s1:str,s2:str)->bool: - """ à_remplacer_par_ce_que_fait_la_fonction - - Précondition : - Exemple(s) : - $$$ sont_anagrammes3('orange', 'organe') - True - $$$ sont_anagrammes3('orange','Organe') - True - $$$ sont_anagrammes3('hezf','ehzu') - False - """ - for elt in set(s1): - if s1.count(elt)==s2.count(elt): - return True - return False - - - - - - +#nom:gantchou koffi +#mi13 +# anagrammes +# 16/01 +#METHODE SPLIT + + +#2 la methode split supprime l'element pris en parametre dans la chaine +# >>> s= "la méthode split est parfois bien utile" +# >>> s.split(' ') +# ['la', 'méthode', 'split', 'est', 'parfois', 'bien', 'utile'] +# >>> s.split('e') +# ['la méthod', ' split ', 'st parfois bi', 'n util', ''] +# >>> s.split('é') +# ['la m', 'thode split est parfois bien utile'] +# >>> s.split() +# ['la', 'méthode', 'split', 'est', 'parfois', 'bien', 'utile'] +# >>> s.split('') +# Traceback (most recent call last): +# File "<stdin>", line 1, in <module> +# ValueError: empty separator +# >>> s.split('split') +# ['la méthode ', ' est parfois bien utile'] + +#3 la methode split ne modifie pas la chaine a laquelle elle s'applique + +#METHODE JOIN +# la methode join ne modifiie pas la chaine a laquelle elle s'applique + + +#la methode sort ne s'applique que sur des listes +# de meme que join + +def join(carac:str,l:list[str])->str: + """ à_remplacer_par_ce_que_fait_la_fonction + + Précondition : + Exemple(s) : + $$$ join('.', ['raymond', 'calbuth', 'ronchin', 'fr']) + 'raymond.calbuth.ronchin.fr' + + """ + res='' + for i in range(len(l)-1): + res+=l[i]+carac + res=res+l[len(l)-1] + + return res + +def sort(s: str) -> str: + """ + Renvoie une chaîne de caractères contenant les caractères de `s` triés dans l'ordre croissant. + + Précondition: aucune + + Exemples: + + $$$ sort('timoleon') + 'eilmnoot' + """ + l=list(s) + l.sort() + v="".join(l) + return v + +def sont_anagrammes(s1: str, s2: str) -> bool: + """ + Renvoie True si s1 et s2 sont anagrammatiques, False sinon. + + Précondition: aucune + + Exemples: + + $$$ sont_anagrammes('orange', 'organe') + True + $$$ sont_anagrammes('orange','Organe') + False + """ + anag1=sort(s1) + anag2=sort(s2) + return anag1==anag2 + +def sont_anagrammes2(s1:str,s2:str)->bool: + """ à_remplacer_par_ce_que_fait_la_fonction + + Précondition : + Exemple(s) : + $$$ sont_anagrammes2('orange', 'organe') + True + $$$ sont_anagrammes2('orange','Organe') + False + + """ + dict1={} + dict2={} + for elt in s1: + if elt in dict1: + dict1[elt]=dict1[elt]+1 + else: + dict1[elt]=1 + + for elm in s2: + if elm in dict2: + dict2[elm]=dict2[elm]+1 + else: + dict2[elm]=1 + return dict1==dict2 + +def sont_anagrammes3(s1:str,s2:str)->bool: + """ à_remplacer_par_ce_que_fait_la_fonction + + Précondition : + Exemple(s) : + $$$ sont_anagrammes3('orange', 'organe') + True + $$$ sont_anagrammes3('orange','Organe') + False + $$$ sont_anagrammes3('hezf','ehzu') + False + """ + for elt in s1: + if s1.count(elt)!=s2.count(elt): + return False + return True + +EQUIV_NON_ACCENTUE = {'é':'e','ê':'e','è':'e','à':'a','û':'u','â':'a','ï':'i'} +def bas_casse_sans_accent (chaine:str)->str: + """ à_remplacer_par_ce_que_fait_la_fonction + + Précondition : + Exemple(s) : + $$$ bas_casse_sans_accent('Orangé') + 'orange' + $$$ bas_casse_sans_accent('ghsêéè') + 'ghseee' + """ + res='' + for elt in chaine: + for accentue in EQUIV_NON_ACCENTUE: + if elt==accentue: + elt=EQUIV_NON_ACCENTUE[accentue] + res+=elt + return res.lower() + +def sont_anagrammes4(s1:str,s2:str)->bool: + """ à_remplacer_par_ce_que_fait_la_fonction + + Précondition : + Exemple(s) : + $$$ sont_anagrammes4('Orangé', 'organE') + True + + """ + a=bas_casse_sans_accent(s1) + b=bas_casse_sans_accent(s2) + if sort(a)!=sort(b): + return False + return True + + + + +