# -*- encoding:utf8 -*-

def histoMots(texte):
    """histoMots(str texte) --> dict.
    Retourne le dictionnaire des fréquences d'apparition
    des mots composant la chaine <texte>."""

    mots = texte.split()    # liste des mots du texte

    frequence = {}

    for mot in mots:
        frequence[mot] = frequence.get(mot, 0) + 1

    return frequence

# Corps principal:

txt = input("Entrez une chaine de caractères: ")

stat = histoMots(txt)

liste_mots = list(stat.keys())          # liste contenant chaque mot du texte une seule fois

liste_freq = []                         # liste triée de tuples (frequence, mot)

for mot in liste_mots:
    couple = (stat[mot], mot)
    liste_freq.append(couple)

liste_freq.sort()                       # tri par fréquence croissant (et non par mot)
liste_freq.reverse()                    # tri par fréquence décroissant


print("Histogramme des fréquences d'apparition des mots d'un texte:\n")  
print("Mot \t Fréquence \t Histogramme")
for freq, mot in liste_freq:
    print(mot, "\t \t", freq, "\t \t", "*" * freq)
