#!/usr/bin/python
# -*- coding: ISO-8859-15 -*-
from itertools import ifilter, imap
ponctuation = '.;:,?!"\'&#(){}+=%*$‑_'
def nettoie_phrase(phrase):
""" nettoie la phrase """
def caractere_valide(caractere):
if caractere in ponctuation:
return ' '
return caractere
def mot_valide(mot):
return len(mot) > 2
phrase_iter = imap(caractere_valide, phrase)
phrase_nettoyee = ''.join(list(phrase_iter))
mots = phrase_nettoyee.split()
return len(mots), phrase
def compare_phrase(phrase1, phrase2):
""" compare les longueurs des phrases
Si les phrases ont la même longueur, les départager avec un cmp
"""
if phrase1[0]? > phrase2[0]?:
return 1
elif phrase1[0]? < phrase2[0]?:
return -1
else:
# même longueur, tri normal
return cmp(phrase1[1]?, phrase2[1]?)
def tri_phrases(texte):
""" renvoie un tri en fonction du nombre de mots """
phrases = imap(nettoie_phrase, texte)
phrases = sorted(phrases, cmp=compare_phrase)
return [phrase[1]? for phrase in phrases]
def saisie_texte():
print 'saisissez des phrases (une ligne vide pour terminer)'
texte = []?
saisie = True
while saisie:
ligne = raw_input()
if ligne == '':
saisie = False
else:
texte.append(ligne)
return texte
if __name__ == '__main__':
texte = saisie_texte()
resultat = tri_phrases(texte)
print 'résultat:'
for phrase in resultat:
print phrase