This repository has been archived on 2019-08-09. You can view files and clone it, but cannot push or open issues or pull requests.
s1-tp/S2/TP2/tp2.py

176 lines
2.8 KiB
Python
Raw Normal View History

2015-01-26 23:06:46 +01:00
# 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, '***')
2015-01-27 10:32:05 +01:00
partie('Quelques méthodes sur les listes et les chaînes') # Geoffrey
2015-01-26 23:06:46 +01:00
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)
2015-01-27 11:02:24 +01:00
section('Méthode sort')http://www.fil.univ-lille1.fr/~L1S2API/CoursTP/tp2_dictionnaires.html
2015-01-26 23:06:46 +01:00
question(1)
question(2)
section('Une fonction sort pour les chaînes')
question(1)
2015-01-27 10:32:05 +01:00
partie('Anagrammes') # Jean-loup
2015-01-26 23:06:46 +01:00
question(1)
2015-01-27 11:02:24 +01:00
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
2015-01-26 23:06:46 +01:00
question(2)
2015-01-27 11:02:24 +01:00
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
2015-01-26 23:06:46 +01:00
question(3)
2015-01-27 11:02:24 +01:00
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
2015-01-26 23:06:46 +01:00
section('Casse et accentuation')
question(1)
question(2)
question(3)
2015-01-27 10:32:05 +01:00
partie('Recherche d\'anagrammes') # Jean-loup
2015-01-26 23:06:46 +01:00
section('Le lexique')
question(1)
question(2)
question(3)
question(4)
section('Anagrammes dun mot : première méthode')
question(1)
question(2)
section('Anagrammes dun mot : seconde méthode')
question(1)
question(2)
question(3)
question(4)
question(5)
section('Comparaison des deux méthodes')
question(1)
2015-01-27 10:32:05 +01:00
partie('Phrases d\'anagrammes') # Geoffrey
2015-01-26 23:06:46 +01:00
question(1)