Trouver les mots répétés dans une phrase

Résolu
bob1978 Messages postés 4 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

Pourquoi ce petit programme ne marche pas ?

p = input("entrer une phrase ")
p = p.split()
print("les mots qui se répètent dans la phrase sont: " )
for x in p:
 for y in p:
  if (x == y and p.index(x) != p.index(y)):
   print(x)


Windows / Firefox 102.0

3 réponses

  1. jee pee Messages postés 31871 Date d'inscription   Statut Modérateur Dernière intervention   9 975
     

    Bonjour,

    Quand avec .index() tu cherches la position d'un mot, tu vas toujours trouver le premier, même s'il y en a 2.


    1
  2. bob1978 Messages postés 4 Statut Membre
     

    merci monsieur; j ai compris

    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      bonjour, peux-tu alors marquer la discussion comme résolue?

      0
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     

    Bonjour,

    Juste pour finaliser cette discussion, une manière simple de détecter les mots répétés consiste à stocker chaque mot d'une phrase dans un dictionnaire dans lequel on garde trace du nombre d'occurrences. Tous les mots dont le compteur est strictement supérieur à 1 sont des mots répétés.

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    from collections import defaultdict
    
    words = """Il en faut peu pour être heureux
    Vraiment très peu pour être heureux
    Il faut se satisfaire du nécessaire
    Un peu d'eau fraîche et de verdure
    Que nous prodigue la nature
    Quelques rayons de miel et de soleil"""
    
    map_word_count = defaultdict(int)
    for word in words.lower().split():
        map_word_count[word] += 1
    
    repeated = {
        word
        for (word, count) in map_word_count.items()
        if count > 1
    }
    
    print(repeated)

    Résultat

    {'il', 'pour', 'heureux', 'peu', 'de', 'faut', 'et', 'être'}

    Bonne chance

    0