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

Résolu
bob1978 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33730 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

A voir également:

3 réponses

jee pee Messages postés 41312 Date d'inscription   Statut Modérateur Dernière intervention   9 652
 

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 Date d'inscription   Statut Membre Dernière intervention  
 

merci monsieur; j ai compris

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

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

0
mamiemando Messages postés 33730 Date d'inscription   Statut Modérateur Dernière intervention   7 869
 

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