Corrigé 3 : Exo2 - TP4

"""
Exercice 2 : On vous demande d'écrire un programme qui lit une phrase à
partir du clavier et qui renvoi les résultats suivants:

    nombre de mots saisis
    la liste des mots les plus longs
    la longueur des mots les plus longs
    la liste des mots les plus courts
    la longueur du mot le plus court

"""
import os

while True:
    #Effacement de l'écran
    os.system("clear")    
    
    # lecvture des données  
    print(30*"*"+"\nlecture des données\n"+30*"*")
    
    #phrase = input("Donnez une phrase")
    phrase = "Ici une    phrase,    avec; des : caractères? spaciaux! Algerienne"    
    
    # Traitement
    print(30*"*"+"\ntraitements\n"+30*"*")

    # Définition des structures de données

    separateurs = ".,?;:/*$£%'+-=!"+'"'
    phrasePurifiée = ""
    listeMots = []

    # Remplcer tous les caractères spéciaux par des espaces
    for lettre in phrase:
        if lettre in separateurs:
            phrasePurifiée = phrasePurifiée + " "
        else:
            phrasePurifiée = phrasePurifiée + lettre
    
    listeMots = phrasePurifiée.split()    
    listeMotsPlusLongs = list()
    listeMotsPlusCourts = list()
        
    longueurDe=dict()
    
    for mot in listeMots:
        longueurDe[mot] = len(mot)
        
    longMotPlusLong = max(longueurDe.values())
    longMotPlusCourt = min(longueurDe.values())
    
    # je construit les liste des mots courts et longs
    for mot, longueur in longueurDe.items():
        if longueur == longMotPlusLong:
            listeMotsPlusLongs.append(mot)
        if longueur == longMotPlusCourt:
            listeMotsPlusCourts.append(mot)
    
    # affichage des résultats
    print(30*"*"+"\nAffichage des résultats\n"+30*"*")

    print("\nla phrase brute :", phrase )
    print("\nla liste des mots :", listeMots )
    print("\nle nombre de mot :", len(listeMots) )
    print("\nla liste des mots les plus courts :", listeMotsPlusCourts )
    print("\nla liste des mots les plus longs :", listeMotsPlusLongs )
    print("\nla longueur du mot le plus long :", longMotPlusLong )
    print("\nla longueur du mot le plus court :", longMotPlusCourt )

    # contrôle du bouclage
    
    quitter = False
    while True:
        recommnencer = input("Voulez-vours recommencer (O/N)?")
        if recommnencer.lower() == 'o':
            break
        elif recommnencer.lower() == 'n':
            print("\n\nAu plaisir de vous revoir plus tard...\n\n")
            quitter = True
            break
        else :
            print("Vous devez asaisir 'O' ou 'N'...")
    if quitter == True:
        break
       

Modifié le: Saturday 28 January 2017, 11:00