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

Résolu
bob1978 Messages postés 4 Statut Membre -  
mamiemando Messages postés 34180 Statut Modérateur -

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

A voir également:

3 réponses

jee pee Messages postés 42365 Statut Modérateur 9 736
 

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
bob1978 Messages postés 4 Statut Membre
 

merci monsieur; j ai compris

0
yg_be Messages postés 24281 Statut Contributeur 1 584
 

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

0
mamiemando Messages postés 34180 Statut Modérateur 7 887
 

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