# PREUD'HOMME Geoffrey # BEAUSSART Jean-loup # Donné le 27/01/201question(5) # TP2 Anagrammes - Dictionnaires # http://www.fil.univ-lille1.fr/~L1S2API/CoursTP/tp2_dictionnaires.html def partie(nom): print('\n\n\n###', nom, '###') def section(nom): print('\n\n===', nom, '===') def question(numero): print('\n***', 'Question', numero, '***') partie('Quelques méthodes sur les listes et les chaînes') # Geoffrey question(1) question(2) question(3) section('Méthode split') question(1) question(2) question(3) section('Méthode join') question(1) question(2) question(3) question(4) section('Méthode sort')http://www.fil.univ-lille1.fr/~L1S2API/CoursTP/tp2_dictionnaires.html question(1) question(2) section('Une fonction sort pour les chaînes') question(1) partie('Anagrammes') # Jean-loup question(1) def sont_anagrammes1(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 """ 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 l1 = list(chaine1) l2 = list(chaine2) l1.sort() l2.sort() return l1 == l2 question(2) def sont_anagrammes2(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 """ 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 occu1 = dict((i,chaine1.count(i)) for i in chaine1) occu2 = dict((i,chaine2.count(i)) for i in chaine2) return occu1 == occu2 question(3) def sont_anagrammes2(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 """ 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 for i in chaine1: if chaine1.count(i) != chaine2.count(i): return False return True section('Casse et accentuation') question(1) question(2) question(3) partie('Recherche d\'anagrammes') # Jean-loup section('Le lexique') question(1) question(2) question(3) question(4) section('Anagrammes d’un mot : première méthode') question(1) question(2) section('Anagrammes d’un mot : seconde méthode') question(1) question(2) question(3) question(4) question(5) section('Comparaison des deux méthodes') question(1) partie('Phrases d\'anagrammes') # Geoffrey question(1)