IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Exercices Python Discussion :

problème de triage et répétition dans un dict


Sujet :

Exercices Python

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 20
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2022
    Messages : 10
    Points : 13
    Points
    13
    Par défaut problème de triage et répétition dans un dict
    Bonjour,

    J'espère que vous allez bien j'ai un petit souci.

    Voila l'énoncé de mon exercice:

    Écrire une fonction words_by_length(fileName) qui prend en paramètre le nom, sous forme d’une chaîne de caractères, d’un fichier texte, et qui renvoie un dictionnaire associant à une longueur l la liste triée (dans l’ordre utf-8 croissant) des mots de longueur l présents dans le texte contenu dans le fichier. Ces mots seront écrits en minuscules.
    voila mon code en pycharm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    f = open(file)
    contenu = f.read().strip()
    a = contenu.lower()
    s = {}
    for mot in re.split("[-? ,.'()]+", a):
        if mot not in s :
            s.setdefault(len(mot), []).append(mot)
    print(s)
    Je dois eliminer les element répetées dans mon dict mais ca ne marche pas avec comme je veux aussi trier mon dict , est ce que vous pouvez me donnez un indice

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Citation Envoyé par s-chrtghhyo Voir le message
    Je dois eliminer les element répetées dans mon dict mais ca ne marche pas avec
    Si les clefs sont des longueurs, ça ne peut pas marcher.
    Par contre, tester si le mot est déjà présent dans la liste associée à une longueur donnée... mais on préfèrera peut être utiliser un set à la place d'une liste.

    Citation Envoyé par s-chrtghhyo Voir le message
    comme je veux aussi trier mon dict , est ce que vous pouvez me donnez un indice
    trier en anglais se dit "sort" et la documentation contient un tuto. sympa sur le sujet.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    Convertir le texte en minuscule.
    Utiliser set pour éliminer les doublons.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 20
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2022
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,


    Si les clefs sont des longueurs, ça ne peut pas marcher.
    Par contre, tester si le mot est déjà présent dans la liste associée à une longueur donnée... mais on préfèrera peut être utiliser un set à la place d'une liste.



    trier en anglais se dit "sort" et la documentation contient un tuto. sympa sur le sujet.
    - W
    oui j'ai pensé a utilisé un set mais voici le resultat attendu d'un exemple de cet exercice:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    {1: ['a', 'c', 'd', 'l', 'n', 's', 'à'],
     2: ['ce', 'de', 'du', 'en', 'et', 'il',
         'la', 'le', 'là', 'sa', 'se', 'si', 'un'],
     3: ['aux', 'des', 'ils', 'les', 'par', 'pas',
         'que', 'qui', 'ses', 'sol', 'une', 'vie'],
     4: ['avec', 'blés', 'ciel', 'dans', 'dont',
         'loin', 'plus', 'pour', 'sous', 'sève',
         'tous', 'voix'],
     5: ['armée', 'astre', 'avril', 'bruit', 'cette',
         'comme', 'coups', 'faire', 'flanc', 'futur',
         'grand', 'haies', 'noire', 'parts', 'pieds',
         'pièce', 'plein', 'terre', 'vives', 'était'],
     6: ['allait', 'arbres', 'autres', 'baiser', 'besoin',
         'cassée', 'champs', 'chaque', 'droite', 'encore',
         'gauche', 'germes', 'gloire', 'grosse', 'herbes',
         'hommes', 'jeunes', 'plaine', 'rauque', 'rayons',
         'rumeur', 'siècle', 'soleil', 'suivre', 'toutes',
         'vertes', 'échine'],
     7: ['bientôt', 'chaleur', 'coulait', 'croyait',
         'fussent', 'germait', 'graines', 'lumière',
         'maheude', 'matinée', 'montait', 'poussée',
         'sillons', 'souffle', 'éclater', 'étaient'],
     8: ['campagne', 'enjambée', 'feuilles', 'jeunesse',
         'obstinés', 'profonds', 'récoltes', 'tapaient', 'épandait'],
     9: ['bourgeons', 'camarades', 'crevaient', 'enfantait', 'enflammés',
         'entendait', 'gerçaient', 'lentement', 'rayonnait'],
     10: ['accompagné', 'betteraves', 'gonflaient', 'maintenant',
          'nourricier', 'poussaient', 'rapprochés', 'rivelaines',
          'ronflement', 'vengeresse', 'échauffant'],
     11: ['débordement', 'germination', 'grandissant', 'jaillissait',
          'reconnaître', 'travaillées', 'ventilateur'],
     12: ['allongeaient', 'chuchotantes', 'continuaient'],
     13: ['distinctement'], 14: ['tressaillaient']}

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par s-chrtghhyo Voir le message
    oui j'ai pensé a utilisé un set mais voici le resultat attendu d'un exemple de cet exercice
    C'est votre exercice et vous devez essayer de le coder avec le Python que vous connaissez...
    Après si vous essayez de coder un truc qui ne marche pas, on peut essayer de vous aider à comprendre pourquoi pour le reste, attendre le corrigé du professeur... (lui sait ce qu'il vous a enseigné et le savoir faire à montrer avec cet exercice).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Ingénieur statisticien
    Inscrit en
    Février 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Ingénieur statisticien
    Secteur : Transports

    Informations forums :
    Inscription : Février 2023
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Même problème
    Bonjour,
    Moi aussi je rencontre des difficultés avec le même exercice. Je ne sais pas ce qui ne marche pas.
    je vous partage mon code en espérant que quelqu'un nou vienne en aide.
    je suis nouveau sur Developpez

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    def words_by_length(fileName) :
        dico_inter = {}
        dico_sortie = {}
        with open(fileName, encoding="utf-8") as fichier :
            for ligne in fichier :
                for mot in ligne.split() :
                    mot = mot.lower()
                    if mot not in dico_inter :
                        dico_inter[mot] = len(mot)
        list_len = list(dico_inter.values()) 
        list_len = sorted(list_len)
        list_mot = list(dico_inter.keys()) 
        list_mot = sorted(list_mot)
        for longueur in list_len :
            for mot2 in list_mot :
                if dico_inter[mot2]==longueur :
                    if longueur not in dico_sortie : 
                        dico_sortie[longueur]=[mot2]
                    elif mot2 not in dico_sortie[longueur] :
                        dico_sortie[longueur].append(mot2)
        return dico_sortie

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    bonjour
    Citation Envoyé par YSENE Voir le message
    je rencontre des difficultés avec le même exercice.
    Très explicite algo ou erreur d'exécution ou contexte d'exécution ou résultats pas bons ou (fichier non trouvé, fichier non valide, ...) ? si c'est l'exécution, un code d'erreur est plus que bien venu.

    Citation Envoyé par YSENE Voir le message
    Je ne sais pas ce qui ne marche pas.
    Comment pourrions-nous le savoir ? si nous n'avons aucune idée de ton problème...
    que quelqu'un nous vienne en aide
    Plus tu nous donnes d'infos, plus tu risques de trouver de l'aide ... moins tu donnes d'infos et moins tu as de chances d'avoir de l'aide !
    $moi= ( !== ) ? : ;

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Ingénieur statisticien
    Inscrit en
    Février 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Ingénieur statisticien
    Secteur : Transports

    Informations forums :
    Inscription : Février 2023
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci d'avoir réagi a mon méssage.
    Au fait, l'exécution du code ne renvoie pas d'arreur. je l'ai aussi testé en local et j'ai l'impression d'avoir le bon résultat. Cependant, quand je soumets le code sur UpyLaB on me notifie que la fonction ne renvoie pas le résultat attendu.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Ingénieur statisticien
    Inscrit en
    Février 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Ingénieur statisticien
    Secteur : Transports

    Informations forums :
    Inscription : Février 2023
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par papajoker Voir le message
    bonjour

    Plus tu nous donnes d'infos, plus tu risques de trouver de l'aide ... moins tu donnes d'infos et moins tu as de chances d'avoir de l'aide !
    je vous partage l'énoncé
    Écrire une fonction words_by_length(fileName) qui prend en paramètre le nom, sous forme d’une chaîne de caractères, d’un fichier texte, et qui renvoie un dictionnaire associant à une longueur l la liste triée (dans l’ordre utf-8 croissant) des mots de longueur l présents dans le texte contenu dans le fichier. Ces mots seront écrits en minuscules.

Discussions similaires

  1. problème répétition dans une liste
    Par scary dans le forum Débuter
    Réponses: 10
    Dernier message: 30/11/2008, 16h23
  2. Réponses: 10
    Dernier message: 15/07/2008, 14h35
  3. Réponses: 0
    Dernier message: 11/07/2008, 12h30
  4. Réponses: 4
    Dernier message: 20/06/2007, 17h34
  5. Réponses: 1
    Dernier message: 06/03/2003, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo