176 lines
2.8 KiB
Python
176 lines
2.8 KiB
Python
# 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)
|
||
|