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

Python Discussion :

une fonction python qui recense tous les mots utilisés dans l’ensemble de la liste de fichier donné


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2022
    Messages : 4
    Par défaut une fonction python qui recense tous les mots utilisés dans l’ensemble de la liste de fichier donné
    Bonjour, je cherche à ecrire une fonction sur python qui prend en parametre une liste de fichier et qui compte le nombre d'apparition de tous les mots présent dans la liste de fichier donnée
    le resultat de cette fonction doit etre une liste dont chaque élément est une liste de plusieurs éléments :
    le premier est le mot utilisé, le deuxième élément est le nombre d’utilisation de ce mot
    dans le premier fichier, le troisième est le nombre d’utilisations de ce mot dans le
    deuxième fichier…

    Le code que j'ai pour le moment reussi a faire est:

    Code:

    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
    # -*- coding: utf-8 -*-
    """
    Created on Tue Dec 27 12:38:19 2022
     
    @author: Utilisateur
    """
    import re
    def mots_dans_fichiers(liste_fichiers):
     
        listefinale = []
        for i in range (len(liste_fichiers)):
            with open(liste_fichiers[i], 'r') as fd:
                azerty = fd.read()
                mot = re.split('[^a-zA-Z0-9_éèàêùçî]', azerty)
                dic = {}
                for i in mot:
                    if i != "":
                        if i in dic:
                            dic[i] += 1
                        else:
                            dic[i] =1
                for i in dic.items():
                    listefinale.append([i[0], i[1]])
        return listefinale
     
     
    def main ():
     
        print(mots_dans_fichiers(["C:\\Users\\Utilisateur\\Downloads\\test\\fichier.txt", "C:\\Users\\Utilisateur\\Downloads\\test\\fichier2.txt"]))
     
    if __name__ == '__main__':
        main()


    Le probleme de ce code est que cela me renvie le mot suivie du nombre d'occurence de ce mot dans tous les fichiers réunis. (le programme fait comme si la liste de fichiers etait un grand fichier texte.

    Merci de vos reponses
    Fichiers attachés Fichiers attachés
    • Type de fichier : py test.py (868 octets, 39 affichages)

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 769
    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 769
    Par défaut
    Citation Envoyé par bien_ou_bien Voir le message
    Le probleme de ce code est que cela me renvie le mot suivie du nombre d'occurence de ce mot dans tous les fichiers réunis.
    non parce que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                for i in dic.items():
                    listefinale.append([i[0], i[1]])
    ajoute les tuples (mot, occurence) trouvé dans le fichier courant en ignorant ce qui a été fait par l'itération précédente.

    Pour le reste, si on veut: "une liste dont chaque élément est une liste de plusieurs éléments :
    le premier est le mot utilisé, le deuxième élément est le nombre d’utilisation de ce mot
    dans le premier fichier, le troisième est le nombre d’utilisations de ce mot dans le
    deuxième fichier…"

    déjà un dictionnaire dont les clefs seraient les mots associés à une liste d'entiers ou l'entier en ième position reflète le nombre d’occurrences du mot dans le ième fichier semblerait plus approprié ... mais c'est vous qui codez.

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2022
    Messages : 4
    Par défaut
    bonjour merci de votre réponse, mais je suis débutant, il y a donc quelque chose que je ne comprends pas dans votre réponse parce que quand je dis "Le probleme de ce code est que cela me renvie le mot suivie du nombre d'occurence de ce mot dans tous les fichiers réunis." vous m'avez repondu que non alors que quand j'exécute le prgramme, c'est bien cela qui se passe.
    aussi pour
    déjà un dictionnaire dont les clefs seraient les mots associés à une liste d'entiers ou l'entier en ième position reflète le nombre d’occurrences du mot dans le ième fichier semblerait plus approprié ... mais c'est vous qui codez.
    est ce que vous voulez dire qu'il faudrait rajouter un dictionnaire pour chaque nouveau fichier grace a une boucle ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 769
    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 769
    Par défaut
    Citation Envoyé par bien_ou_bien Voir le message
    aussi pour est ce que vous voulez dire qu'il faudrait rajouter un dictionnaire pour chaque nouveau fichier grace a une boucle ?
    Vous devez prendre une feuille de papier et réfléchir en gribouillant dessus avec un crayon avant de coder.

    Si on part d'un seul fichier contenant A B A, on devrait sortir [A, 2], [B, 1].
    Si le deuxième fichier contient B C C, on devrait avoir [A, 2, 0], [B, 1, 1] [C, 0, 2]
    Et si vous ne voyez pas qu'en récupérant le B, chercher une s/liste commençant par B ou la créer sera plus facile avec un dictionnaire qu'avec une liste...

    Citation Envoyé par bien_ou_bien Voir le message
    mais je suis débutant, il y a donc quelque chose que je ne comprends pas dans votre réponse parce que quand je dis "Le probleme de ce code est que cela me renvie le mot suivie du nombre d'occurence de ce mot dans tous les fichiers réunis." vous m'avez repondu que non alors que quand j'exécute le prgramme, c'est bien cela qui se passe.
    Si vous ne comprenez pas le code que vous avez écrit... est ce que vous comprenez ce que vous racontez en français? Et pour apprendre le français, vous souvenez vous être allé voir parent/maîtresse pour leur demander de vous expliquer le sens de ce que vous aviez écrit ?

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

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2022
    Messages : 4
    Par défaut
    Si vous ne comprenez pas le code que vous avez écrit... est ce que vous comprenez ce que vous racontez en français? Et pour apprendre le français, vous souvenez vous être allé voir parent/maîtresse pour leur demander de vous expliquer le sens de ce que vous aviez écrit ?
    Vous ne comprenez pas ce que j'ai dit. Je comprends le code que j'ai saisi dans le tout premier message et pourquoi ce code ne fait pas ce que je veux. En fait je suis allé chercher de l'aide sur ce forum car je n'ai justement aucune idée de comment régler le problème.


    Si on part d'un seul fichier contenant A B A, on devrait sortir [A, 2], [B, 1].
    Si le deuxième fichier contient B C C, on devrait avoir [A, 2, 0], [B, 1, 1] [C, 0, 2]
    Et si vous ne voyez pas qu'en récupérant le B, chercher une s/liste commençant par B ou la créer sera plus facile avec un dictionnaire qu'avec une liste..
    Merci de l'aide

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Bonjoiur
    Citation Envoyé par bien_ou_bien Voir le message
    En fait je suis allé chercher de l'aide sur ce forum car je n'ai justement aucune idée de comment régler le problème.
    L'informatique en général et l'algorithmique en particulier existaient bien avant les forums. Concevoir un algo c'est d'abord le réfléchir, au besoin en gribouillant sur une feuille comme l'a dit wiztricks.
    Toi tu es parti bille en tête, sans vraiment de plan organisé, codant un peu comme ça te vient.

    Déjà traiter n éléments c'est traiter un élément n fois. Autrement dit, faire une fonction qui compte les mots dans "tous les fichiers" c'est faire une fonction qui compte les mots dans un fichier, plus facile à mettre au point et à tester ; puis une fois bien réglée, l'appliquer sur chacun des fichiers en récupérant le résultat et en le concaténant à la liste de tous les résultats.
    Ainsi en reprenant l'exemple de wiztricks, avec ABA la fonction retourne ["A", 2], ["B", 1] qu'on concatène au résultat final contenant alors {"A" : [2,], "B" : [1,], "C" : [0,]}. Puis avec BCC la fonction retourne ["B", 1], ["C", 2] ce qui, si on le mixe correctement, donne alors le résultat {"A" : [2, 0,], "B" : [1, 1,], "C" : [0, 2]}.

    Exemple
    Code python : 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
    #!/usr/bin/env python
     
    def compterMots(fic):
    	return ((m, fic.count(m)) for m in set(fic))
     
    resultat=dict()
    for (i, r) in enumerate(
    	(
    		compterMots("ABA"),
    		compterMots("BCC"),
    	)
    ):
    	for (m, c) in r:
    		resultat.setdefault(m, [0,] * i).append(c)
     
    for v in resultat.values():
    	v.extend([0,] * (i - len(v) + 1))
     
    print(resultat)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 769
    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 769
    Par défaut
    Citation Envoyé par bien_ou_bien Voir le message
    Je comprends le code que j'ai saisi dans le tout premier message et pourquoi ce code ne fait pas ce que je veux. En fait je suis allé chercher de l'aide sur ce forum car je n'ai justement aucune idée de comment régler le problème.
    Si vous compreniez le code que vous avez écrit, vous sauriez qu'il n'a aucune chance de faire ce que vous attendez de lui... et que le soucis n'est pas dans le code (il marche) mais dans l'algorithme/la méthode qu'il réalise.... ce qui se travaille sur une feuille de papier car avant de coder, il faut savoir ce qu'on veut faire faire à la machine.

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

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2022
    Messages : 4
    Par défaut
    bon, arrêtez de me faire les philosophes soit vous répondez à ma question soit vous vous la fermez au lieu de me dire des choses évidentes que je sais déjà ou que j'ai déjà faite.

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 769
    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 769
    Par défaut
    Citation Envoyé par bien_ou_bien Voir le message
    bon, arrêtez de me faire les philosophes soit vous répondez à ma question soit vous vous la fermez au lieu de me dire des choses évidentes que je sais déjà ou que j'ai déjà faite.
    Si vous rencontrez des difficultés à penser un algorithme qui fasse le boulot (malgré les indications déjà données), sauf à raconter ce qui vous bloque c'est pas en tapant sur la table que vous allez avancer: ce forum n'est pas une hotline ou on va satisfaire vos désidérata, on n'est pas la pour faire vos exercices et aucune question côté langage Python n'a été posée.

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

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bien_ou_bien Voir le message
    bon, arrêtez de me faire les philosophes soit vous répondez à ma question soit vous vous la fermez au lieu de me dire des choses évidentes que je sais déjà ou que j'ai déjà faite.
    Ok monsieur le "je sais tout et j'ai déjà tout fait et j'en ai rien à foutre des conseils de ceux à qui je suis venu en demander et qui ont pris de leur temps pour m'en apporter", je vais répondre à ta question, c'est à dire la seule et unique question que tu aies réellement posée dans ce fil et qui est (je cite): <<< est ce que vous voulez dire qu'il faudrait rajouter un dictionnaire pour chaque nouveau fichier grace a une boucle ? >>>
    Donc oui, il faut une boucle. J'espère que ceci répond à ta question.

    Et maintenant comme demandé si poliment je la ferme et te dis "bonne continuation dans ta carrière et dans ta vie".
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Hello,
    je vais aussi ramener mon grain de sel : Je ne sais pas d'où proviennent tes fichiers texte source et ce qu'ils contiennent mais suivant l'encodage de ces fichiers et les signes de ponctuations et les caractères qui se trouvent dedans tu risques d'avoir des surprises en utilisant un split avec le motif que tu utilises.
    Ami calmant, J.P

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Je ne sais pas...avec le motif que tu utilises.
    Nan mais tu fais le philosophe là !!! Tu te doutes bien que c'est là aussi une chose évidente qu'il sait déjà ou qu'il a déjà essayée. Je pense que tu devrais plutôt répondre à sa question (sait-on jamais, ta réponse pourrait différer de la mienne)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Bonjour,

    Pour ce cas d'utilisation il y a le Counter qui est parfaitement adapté pour compter.
    Plutôt que lire l'intégralité du fichier avec read() il serait plus efficace d'utiliser readline() dans une boucle (à ne pas confondre avec readlines).

    Vu que ce genre d'exercice est très courant les exemples ne manquent pas: https://stackoverflow.com/questions/...counter-object
    et votre code peut être simplifié.

  14. #14
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Avec Counter c'est beaucoup plus simple on obtient la fréquence des mots de l'ensemble d'un texte avec une instruction du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Counter(re.findall('\w+', text,re.UNICODE))
    [Counter({'La': 3, 'la': 3, 'à': 3, 'vous': 3, 'l': 2, 'fort': 2, ...
    Attention à l'encodage du texte ! ( mettre les bonnes options dans le findall et dans le open des fichiers (encoding) )

  15. #15
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par binarygirl Voir le message
    Plutôt que lire l'intégralité du fichier avec read() il serait plus efficace d'utiliser readline() dans une boucle
    Je ne sais pas si lire chaque ligne et compter les mots sera plus efficace que compter les mots dans tout le fichier lu d'un bloc... mais si le but est d'itérer tout le fichier ligne par ligne on peut alors se passer de readline() et itérer simplement sur le fichier lui-même.
    Ainsi un for l in fp.readline(): ... s'écrira tout aussi bien for l in fp: ....
    La méthode readline() sert juste quand on veut lire une ligne de façon ponctuelle (il faudrait d'ailleurs que je regarde si on peut mélanger les deux façons de faire sans les collisionner ou bien si les deux utilisent un pointeur commun).

    Citation Envoyé par binarygirl Voir le message
    et votre code peut être simplifié.
    Attention, tu commences toi-aussi à philosopher...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2022
    Messages : 6
    Par défaut
    Citation Envoyé par binarygirl Voir le message
    Plutôt que lire l'intégralité du fichier avec read() il serait plus efficace d'utiliser readline() dans une boucle (à ne pas confondre avec readlines).
    Bonsoir
    si je ne me trompe pas, fd.read() permet de renvoyer la chaine de caractere par la lecture du fichier entier, dans ce ca pourquoi utilisé fd.readline dans une boucle?

  17. #17
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Citation Envoyé par hugo_ca31 Voir le message
    Bonsoir
    si je ne me trompe pas, fd.read() permet de renvoyer la chaine de caractere par la lecture du fichier entier, dans ce ca pourquoi utilisé fd.readline dans une boucle?
    C'est surtout dans le cas où on serait amené à traiter de gros fichiers. Il n'est pas réellement utile de charger la totalité du fichier en mémoire en un seul coup, puisque le lire au fur et à mesure est suffisant dans ce cas de figure. Alors autant ne pas gaspiller des ressources (CPU, mémoire). On voit aussi souvent des exemples avec readlines, mais là encore c'est généralement une utilisation abusive.

  18. #18
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par hugo_ca31 Voir le message
    si je ne me trompe pas, fd.read() permet de renvoyer la chaine de caractere par la lecture du fichier entier
    Attention, la doc Python mentionne explicitement à propos de read() "c'est votre problème si le fichier est deux fois plus grand que la mémoire de votre machine." sous-entendant que la lecture du fichier entier n'est pas garantie.

    Ainsi par précaution, si je dois traiter un fichier (sans forcément le traiter par lignes) alors je préfère boucler de cette façon
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while True:
    	if not (data:=fp.read(nnn)): break
    	... (traitement data)...
    # while
    En essayant d'affine au mieux la valeur de "nnn"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2022
    Messages : 6
    Par défaut
    Bonjour je reviens vers vous car j'ai a peu prés le même problème énoncé au début de cette discussion.
    mais quand je m'aide du bout de programme donné par Sve@r que je rappelle ici:
    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
    #!/usr/bin/env python
     
    def compterMots(fic):
    	return ((m, fic.count(m)) for m in set(fic))
     
    resultat=dict()
    for (i, r) in enumerate(
    	(
    		compterMots("ABA"),
    		compterMots("BCC"),
    	)
    ):
    	for (m, c) in r:
    		resultat.setdefault(m, [0,] * i).append(c)
     
    for v in resultat.values():
    	v.extend([0,] * (i - len(v) + 1))
     
    print(resultat)
    Je n'arrive pas a mettre la partie suivante dans une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    resultat=dict()
    for (i, r) in enumerate(
    	(
    		compterMots("ABA"),
    		compterMots("BCC"),
    	)
    ):
    	for (m, c) in r:
    		resultat.setdefault(m, [0,] * i).append(c)
     
    for v in resultat.values():
    	v.extend([0,] * (i - len(v) + 1))
     
    print(resultat)
    le but de mettre cette partie dans une fonction est qu'on pourrait donner le nombre de fichier que l'on veut (dans la limite de la mémoire disponible) et que nous puissions renseigné les fichier en appelant la fonction au lieu de les renseigner dans le programme. j'ai beau utilisé vos conseil comme par exemple écrire sur un papier mon algorithme avant, je ne trouve pas de solution et cela fait un moment que je tourne en rond.
    Mercie de votre aide

  20. #20
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 769
    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 769
    Par défaut
    Citation Envoyé par hugo_ca31 Voir le message
    j'ai beau utilisé vos conseil comme par exemple écrire sur un papier mon algorithme avant, je ne trouve pas de solution et cela fait un moment que je tourne en rond.e
    papier crayon, c'est pour trouver des algos/méthodes.... les traduire en Python (comme transformer quelques instructions en fonction) c'est ce qu'on apprend dans les tutos.... qui proposent souvent des exercices corrigés pour s'entraîner.

    Sans compter qu'ouvrir un nouveau sujet et montrer le code que vous avez essayé d'écrire ne sont pas des options: on peut essayer de vous expliquer ce que vous n'avez pas compris plutôt que vous donner du code juste bon a regarder.

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

Discussions similaires

  1. Boucle sur tous les mots contenus dans un fichier texte
    Par medmaysais dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 12/03/2016, 09h56
  2. Réponses: 1
    Dernier message: 17/06/2013, 10h45
  3. Une méthode toString qui appelle tous les objets
    Par Invité dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 28/05/2013, 18h09
  4. Réponses: 8
    Dernier message: 19/10/2011, 19h03
  5. Réponses: 9
    Dernier message: 05/12/2007, 15h24

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