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

Résolu/Fermé
bob1978 Messages postés 4 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 29 juin 2023 - Modifié le 12 juil. 2022 à 23:23
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 12 juil. 2022 à 23:30

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

jee pee Messages postés 39646 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 avril 2024 9 238
8 juil. 2022 à 23:10

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 mercredi 31 mars 2004 Statut Membre Dernière intervention 29 juin 2023
9 juil. 2022 à 00:33

merci monsieur; j ai compris

0
yg_be Messages postés 22727 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
9 juil. 2022 à 07:59

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

0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 12 juil. 2022 à 23:30

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