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 :

exercice python sur les fichiers [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 9
    Points
    9
    Par défaut exercice python sur les fichiers
    Bonjour j'ai besoin d'aide pour cette exercice python svp

    Ecrire une fonction nouveaux_heros dont le but consiste à remplacer les héros d'une histoire. Il y aura deux paramètres:

    le premier sera une chaîne de caractères précisant le nom du fichier contenant l'histoire initiale ;
    le deuxième sera une chaîne de caractères précisant le nom du fichier dans lequel sera sauvegardée l'histoire modifiée comme précisé ci-dessous
    Dans l'histoire initiale, présente dans le fichier dont le nom est donné en premier argument, trois protagonistes interviennent : Pierre, Paul et Jacqueline.
    La fonction devra remplacer ces trois héros par, respectivement, Paul, Tom et Mathilde.
    Le texte ainsi modifié sera alors stocké dans le fichier dont le nom est donné en deuxième argument.

    Nom : Capture.PNG
Affichages : 1305
Taille : 46,5 Ko

    voici ce que j'ai fait pour l'instant si vous pouvez m'aidez svp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    # -*- coding: utf-8 -*-
    def nouveaux_heros(a,b):
        fichier=open("histoire_1.txt")
        text= fichier.read()

  2. #2
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,

    Avant de travailler sur les fichiers je vous suggère d'essayer de faire l’exercice avec des chaines de caractères. Une fois que c'est fait et que cela fonctionne vous passez aux fichiers...


    PS : Dans votre code il y a un petit soucis : les paramètres a et b doivent être utilisés, en particulier on voit que le paramètre a est censé contenir le nom du fichier à lire donc l’instruction fichier=open("histoire_1.txt") devrait plutôt être fichier=open(a)...

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Comme dit Beginner, découpe tes tâches en fonctions. La première sera de convertir le contenu d'une string.
    Quand cette fonction sera parfaitement ok, ce sera alors facile d'ouvrir le fichier et passer son contenu à ladite fonction.

    PS: tu fais gaffe aussi que Paul (héros de la premère histoire) disparait mais revient ensuite comme héros de la seconde. Il te faudra donc gérer l'ordre des replacements. Et pour vraiment bien faire, ta fonction devrait commencer par mémoriser les positions des noms à remplacer puis ensuite seulement faire le remplacement. Ca lui permettrait de gérer des cas comme "remplacer Pierre et Paul par Paul et Pierre"...
    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]

  4. #4
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 9
    Points
    9
    Par défaut
    j'ai fait cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    remplacement = {'Paul': 'Tom','Pierre': 'Paul','Jacqueline': 'Mathilde'}
     
    for i, nom in enumerate(remplacement.keys()):
        nouveautexte = nouveautexte.replace(nom, f"\{{i}\}")
     
    nouveautexte = texte.format(remplacement.values())

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    enumerate ne sert pas à cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    >>> remplacement = {'Paul': 'Tom','Pierre': 'Paul','Jacqueline': 'Mathilde'}
    >>> for i, n in enumerate(remplacement):
    ...     print(i, n)
    ... 
    0 Paul
    1 Pierre
    2 Jacqueline
    Il faut utiliser dict.items()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>> for i, n in remplacement.items():
    ...     print(i, n)
    ... 
    Paul Tom
    Pierre Paul
    Jacqueline Mathilde

  6. #6
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 9
    Points
    9
    Par défaut
    du coup ce serait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    # -*- coding: utf-8 -*-
    def nouveau_heros(a,b):
        with open('histoire_1.txt','r') as mon_fichier:
            contenu = mon_fichier.read()
            transformation = {'Paul': 'Tom','Pierre': 'Paul','Jacqueline': 'Mathilde'}
            for i, nom in transformation.keys()):
                texte = texte.replace(nom, f"\{{i}\}")
    texte = texte.format(*transformation.values())

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par amina3020- Voir le message
    du coup ce serait
    Vous avez essayé? Ca fonctionne?
    Quel est l'intérêt de poser des questions auxquelles l'interpréteur Python est la pour vous répondre?
    Il est patient, il ne mord pas,...

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

  8. #8
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 9
    Points
    9
    Par défaut
    python me met une erreur comme quoi text is not defined mais pourtant je l'ai bien défini la variable

  9. #9
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    où donc est-elle définie, cette variable ???
    Pas d'aide par mp.

  10. #10
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 9
    Points
    9
    Par défaut
    regarder comme erreur il me donne aussi f-string: single "}" is not allowed je n'ai pas compris cette erreur si vous pouvez m'eclaircir et sa sourligne en rouge le f qui est à la 7eme ligne

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par amina3020- Voir le message
    regarder comme erreur il me donne aussi f-string: single "}" is not allowed je n'ai pas compris cette erreur si vous pouvez m'eclaircir et sa sourligne en rouge le f qui est à la 7eme ligne
    Ca vient des antislash dans f"\{{i}\}".
    Ils sont là pourquoi? Vous vouliez faire quoi?

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

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par amina3020- Voir le message
    Citation Envoyé par Sve@r Voir le message
    Comme dit Beginner, découpe tes tâches en fonctions. La première sera de convertir le contenu d'une string.
    Quand cette fonction sera parfaitement ok, ce sera alors facile d'ouvrir le fichier et passer son contenu à ladite fonction.
    du coup ce serait for i, nom in transformation.keys())
    Ben écoute, puisque tu ne veux pas suivre nos conseils, et qu'en plus tu ne fais même pas attention à ce que tu tapes, inutile alors de venir poser des questions. Commence déjà par prendre du temps pour réfléchir à ce que renvoie la méthode "keys()" d'un dictionnaire, et à l'effet d'une parenthèse fermante non ouverte au lieu de nous faire perdre le notre.
    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
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 9
    Points
    9
    Par défaut
    j'ai oublier d'enlever la parenthèse pour vous montrez mais dans mon code elle était enlever quand j'ai enlever enumrate bref la enfete le problème cest que je n'utilise pas les paramètre a et b
    b je doit le remplacer par texte et a je doit créer une nouvelle variable a qui lit le fichier c'est bien cela ?

  14. #14
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Lis ton exo : a est le nom du premier fichier (source), b le nom du deuxième fichier (cible).
    Au passage, tu n'as pas répondu à ma question : c'est ta façon de procéder ? Tu poses des questions sans regarder les réponses. Si c'est le cas, c'est lassant...
    Pas d'aide par mp.

  15. #15
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,

    Pour les paramètres j'avais écrit cela :

    Citation Envoyé par Beginner. Voir le message
    PS : Dans votre code il y a un petit soucis : les paramètres a et b doivent être utilisés, en particulier on voit que le paramètre a est censé contenir le nom du fichier à lire donc l’instruction fichier=open("histoire_1.txt") devrait plutôt être fichier=open(a)...
    Quant au paramètre b il est censé contenir le nom du fichier dans lequel on va écrire le résultat... Il faudra donc "créer" ce fichier et y écrire le résultat...

    Mais encore une fois à votre place j’aurais fait ce travail sur des chaines de caractères (string) avant de passer aux fichiers et ce pour éviter de cumuler les problèmes...

  16. #16
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Comme la remarqué Sve@r il faut faire attention à l'ordre des remplacements sinon ça ne marche pas :

    Code qui marche :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    histoire_1 = "Si Pierre est le fils de Paul, et si Paul est le frère de Jacqueline, qui est Pierre pour Jacqueline ?"
    print("Phrase initiale :", histoire_1)
     
    histoire_1 = histoire_1.replace("Paul", "Tom")
    print(histoire_1)
     
    histoire_1 = histoire_1.replace("Pierre", "Paul")
    print(histoire_1)
     
    histoire_1 = histoire_1.replace("Jacqueline", "Mathilde")
    print("Phrase finale :", histoire_1)

    Code qui ne marche pas :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    histoire_1 = "Si Pierre est le fils de Paul, et si Paul est le frère de Jacqueline, qui est Pierre pour Jacqueline ?"
    print("Phrase initiale :", histoire_1)
     
    histoire_1 = histoire_1.replace("Pierre", "Paul")
    print(histoire_1)
     
    histoire_1 = histoire_1.replace("Paul", "Tom")
    print(histoire_1)
     
    histoire_1 = histoire_1.replace("Jacqueline", "Mathilde")
    print("Phrase finale :", histoire_1)

  17. #17
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 9
    Points
    9
    Par défaut
    j'ai bien vu votre message concernant les remplacements mais je voulais savoir ou est le défault pour l'instant dans mon code sans prendre en compte les remplacements que vous m'avez demandé à faire quand je lance la console python m'affiche transformation is not defined mais je ne vois pas pk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    def nouveaux_heros(a,b):
        a=open("histoire_1.txt",'r')
        contenu = a.read()
        transformation = {'Paul': 'Tom','Pierre': 'Paul','Jacqueline': 'Mathilde'}
        for ancien, nouveau in tranformation.items():
            b = b.replace(ancien, nouveau)
    print(nouveaux_heros("histoire_1.txt", "nouvelle_histoire_1.txt"))

  18. #18
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Oui il y a un problème : vous avez écrit : for ancien, nouveau in tranformation.items(): or il manque un "s" à tranformation...


    Relisez mon message #15 car il y a encore des problèmes par rapport aux paramètres...

  19. #19
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Encore une fois je vous conseil de procéder par étape car là vous vous emmêlez les pinceaux...

    Prenez chaque ligne et essayez de les comprendre, vérifier si ces lignes font bien ce que vous voulez en utilisant des print à chaque étape...

    Décomposer l'exercice :

    - Faite un code qui lit le contenu d'un fichier et affiche le contenu dans la console avec print...
    - Faite un code qui "crée" un fichier et qui écrit une chaine de caractère dans ce fichier.
    - Faite un code qui fait les remplacements demandés mais en travaillant sur des chaines et non des fichiers.

    Ensuite en combinant ces trois points vous pouvez faire l'exercice...


    Relisez mon message #15 car il y a encore des problèmes par rapport aux paramètres...

  20. #20
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Citation Envoyé par amina3020- Voir le message
    j'ai bien vu votre message concernant les remplacements mais je voulais savoir ou est le défault pour l'instant dans mon code sans prendre en compte les remplacements que vous m'avez demandé à faire quand je lance la console python m'affiche transformation is not defined mais je ne vois pas pk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    def nouveaux_heros(a,b):
        a=open("histoire_1.txt",'r')
        contenu = a.read()
        transformation = {'Paul': 'Tom','Pierre': 'Paul','Jacqueline': 'Mathilde'}
        for ancien, nouveau in tranformation.items():
            b = b.replace(ancien, nouveau)
    print(nouveaux_heros("histoire_1.txt", "nouvelle_histoire_1.txt"))
    On va repartir de là qui est une bonne base.
    - pour "a", OK.
    - ensuite, tu corriges ta faute de frappe avec transformation.
    - c'est quoi "b" ? "a" était un nom de fichier, il en est de même pour "b", donc là tu vas remplacer je ne sais quoi dans le nom du fichier "b".
    - que veux-tu faire avec ton "print" à la fin ? Si il y a qqchose à afficher, c'est le contenu remplacé.
    Comme déjà dit, occupe-toi du remplacement des mots dans ta chaîne, tu verras après pour les fichiers.
    Pas d'aide par mp.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Besoin d'aide avec un exercice de python sur les listes.
    Par Azixp92 dans le forum Général Python
    Réponses: 13
    Dernier message: 14/01/2020, 08h39
  2. Besoin d'aide sur python, exercices sur les fichiers
    Par Mini-minimoys dans le forum Général Python
    Réponses: 6
    Dernier message: 21/11/2015, 18h37
  3. [Free Pascal] Exercice sur les fichiers typés et procédures
    Par osabri dans le forum Free Pascal
    Réponses: 2
    Dernier message: 17/01/2010, 11h50
  4. [Turbo Pascal] Exercice sur les fichiers
    Par jawher dans le forum Turbo Pascal
    Réponses: 0
    Dernier message: 07/11/2009, 11h47
  5. Réponses: 6
    Dernier message: 28/04/2004, 10h41

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