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
2015-01-27 11:02:24 +01:00

176 lines
2.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 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)
partie('Phrases d\'anagrammes') # Geoffrey
question(1)