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 33367 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 novembre 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 40463 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 20 novembre 2024 9 421
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 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 1 551
9 juil. 2022 à 07:59

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

0
mamiemando Messages postés 33367 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 novembre 2024 7 801
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