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 :

aide exo 9.4 d'apprendre python 3 de Gerard Swinnen


Sujet :

Exercices Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    etudiant python
    Inscrit en
    mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant python
    Secteur : Transports

    Informations forums :
    Inscription : mai 2019
    Messages : 16
    Points : 5
    Points
    5
    Par défaut aide exo 9.4 d'apprendre python 3 de Gerard Swinnen
    Bonjour

    je suis bolqué sur l'exercice 9.4 du livre Python de gérard Swinnen. Le code doit lire un texte et le recopier en triplant les espaces.
    Le code que j'ai trouvé permet de lire le texte, triple les espaces mais ne le recopie pas.
    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
    #9.4 tripler l'espace entre les mots
     
    #triplement des espaces dans un fichier texte
    from os import chdir
    chdir("/home/loic/Documents/python/manipulation fichier")
     
    def triplerEspaces(ch):
        "fonction qui triple les espaces"
        i, nouv=0,""
        while i < len(ch):
            if ch[i]==" ":
                nouv=nouv+"   "
            else:
                nouv=nouv+ch[i]
            i=i+1
        return nouv
     
    NomF=input("Nom du fichier: ")
    fichier= open(NomF,"w+")
    lignes=fichier.readlines()
    fichier.close
     
    n=0
    while n<len(lignes):
        lignes[n] = triplerEspaces(lignes[n])
        n=n+1
     
    fichier=open(NomF,"a")
    #fichier.seek(5)
    fichier.writelines(lignes)
    fichier.close
     
    print (lignes)
    pourriez vous m'aider?
    Fichiers attachés Fichiers attachés
    • Type de fichier : py 9-4.py (668 octets, 18 affichages)

  2. #2
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 468
    Points : 24 475
    Points
    24 475
    Par défaut
    Salut,

    Citation Envoyé par loicsu33 Voir le message
    Le code que j'ai trouvé permet de lire le texte, triple les espaces mais ne le recopie pas.
    Pourquoi ne pas le comparer avec le code donné en solution? Et essayer de comprendre par vous même où est l'erreur...

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    etudiant python
    Inscrit en
    mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant python
    Secteur : Transports

    Informations forums :
    Inscription : mai 2019
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    bonjour W

    C'est le code du corrigé. Je ne sais pas si c'est un bug du logiciel que j'utilise ou si c'est le code... Je suis un peu perdu.
    Je suis sur ubuntu et j'utilise IDLE.

  4. #4
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 468
    Points : 24 475
    Points
    24 475
    Par défaut
    Salut,

    Citation Envoyé par loicsu33 Voir le message
    C'est le code du corrigé.
    Dans le cours Python disponible ici, le corrigé de l'exercice est:
    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
    # Triplement des espaces dans un fichier texte.
    # Ce script montre également comment modifier le contenu d'un fichier
    # en le transférant d'abord tout entier dans une liste, puis en
    # ré-enregistrant celle-ci après modifications
     
    def triplerEspaces(ch):
      "fonction qui triple les espaces entre mots dans la chaîne ch"
      i, nouv = 0, ""
      while i < len(ch):
          if ch[i] == " ":
          nouv = nouv + "	"
          else:
          nouv = nouv + ch[i]
          i = i +1	  
      return nouv
     
    NomF = input("Nom du fichier : ")
    fichier = open(NomF, 'r+')	  # 'r+' = mode read/write
    lignes = fichier.readlines()	    # lire toutes les lignes
     
    n=0
    while n < len(lignes):
      lignes[n] = triplerEspaces(lignes[n])
      n =n+1
     
    fichier.seek(0) 	    # retour au début du fichier
    fichier.writelines(lignes)	  # réenregistrement
    fichier.close()
    et vous pouvez constater vous même que la partie traitement de fichier est bien différente.

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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    etudiant python
    Inscrit en
    mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant python
    Secteur : Transports

    Informations forums :
    Inscription : mai 2019
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    bonjour W

    Je viens de tester le code corrigé de l'exercice 9.5 et je me retrouve avec le même problème d'écriture dans un fichier.
    le problème est de récupérer des nombres dans un fichier, de les convertir en entier et de les inscrire dans un nouveau fichier.
    J'arrive à avoir la lecture, la conversion, la création du nouveau fichier mais pas l'écriture... j'ai vérifié les droits du fichier et j'ai la permission en écriture.
    ci dessous le code corrigé de l'exercice 9.5

    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
    #mise en forme de données numériques
    #le fichier traité est un fichier texte dont chaque ligne contient un nombre
    #réel (sans exposant et encodé sous la forme de caractères)
     
    def valArrondie(ch):
        "représentation de la valeur arrondie du nombre présenté dans la chaine ch"
        f=float(ch)     #conversion de la chaine en un nombre réel
        e=int(f+0.5)    #conversion en entier (on ajoute d'abord 0.5 au réel
                        #pour l'arrondir correctement)
        return str(e)   #reconversion en chaine de caractères
     
    fiSource=input("Nom du fichier à traiter: ")
    fiDest=input("Nom du fichier destinataire: ")
    fs = open(fiSource,'r')
    fd = open(fiDest, 'w')
     
    while 1:
        ligne = fs.readline()     #lecture d'une ligne de fichier
        if ligne == "" or ligne == "\n":
            break
        ligne =valArrondie(ligne)
        print(ligne)
        fd.write(ligne + "\n")
     
     
    fs.close
    fd.close

  6. #6
    Futur Membre du Club
    Homme Profil pro
    etudiant python
    Inscrit en
    mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant python
    Secteur : Transports

    Informations forums :
    Inscription : mai 2019
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Dans le cours disponible ici, le corrigé de l'exercice est:
    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
    # Triplement des espaces dans un fichier texte.
    # Ce script montre également comment modifier le contenu d'un fichier
    # en le transférant d'abord tout entier dans une liste, puis en
    # ré-enregistrant celle-ci après modifications
     
    def triplerEspaces(ch):
      "fonction qui triple les espaces entre mots dans la chaîne ch"
      i, nouv = 0, ""
      while i < len(ch):
          if ch[i] == " ":
          nouv = nouv + "	"
          else:
          nouv = nouv + ch[i]
          i = i +1	  
      return nouv
     
    NomF = input("Nom du fichier : ")
    fichier = open(NomF, 'r+')	  # 'r+' = mode read/write
    lignes = fichier.readlines()	    # lire toutes les lignes
     
    n=0
    while n < len(lignes):
      lignes[n] = triplerEspaces(lignes[n])
      n =n+1
     
    fichier.seek(0) 	    # retour au début du fichier
    fichier.writelines(lignes)	  # réenregistrement
    fichier.close()
    et vous pouvez constater vous même que la partie traitement de fichier est bien différente.

    - W
    effectivement vous avez raison. Je débute sur le forum et je n'ai pas vu que j'avais mis une version différente du corrigé pour essayer de trouver pourquoi la version du corrigé n'écrivait pas dans le fichier. désolé pour cette erreur. Il m'arrive le même problème sur l'exercice suivant comme noté dans mon autre message.

  7. #7
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 468
    Points : 24 475
    Points
    24 475
    Par défaut
    Citation Envoyé par loicsu33 Voir le message
    Il m'arrive le même problème sur l'exercice suivant comme noté dans mon autre message.
    Et bien assurez-vous plutôt 3 fois qu'une que vous avez recopié la solution proprement!

    Citation Envoyé par loicsu33 Voir le message
    Je débute sur le forum et je n'ai pas vu que j'avais mis une version différente du corrigé
    C'est un forum de développeurs Python: si vous avez des soucis pour faire un exercice, on voudra bien essayer de vous expliquer deux/trois trucs pour y arriver.
    Pour ce qui est d'apprendre à recopier le texte d'une fenêtre à celle de l'éditeur de texte, c'est pas le bon forum.

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

  8. #8
    Futur Membre du Club
    Homme Profil pro
    etudiant python
    Inscrit en
    mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant python
    Secteur : Transports

    Informations forums :
    Inscription : mai 2019
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    J'ai trouvé mon erreur.

    Il manquait les parenthèses à la fin de la méthode .close()

    Merci pour votre temps.

  9. #9
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 468
    Points : 24 475
    Points
    24 475
    Par défaut
    Citation Envoyé par loicsu33 Voir le message
    comme a dit wiztricks qui apporte des bonnes réponses quand il ne flingue pas: il faut parfois sortir du code...
    Relisez les 2 dernières lignes du code que vous avez posté:
    • Vous faîtes un exercice du chapitre 9 en ignorant encore la différence entre fonction et appel d'une fonction,
    • Relisez le corrigé: les parenthèses sont bien là.


    Merci pour cette réponse bienveillante qui ne fait pas avancer mon problème. C'est cool de se sentir épaulé.
    La première des choses à faire lorsqu'on recopie et que çà ne fonctionne pas est de s'assurer qu'on n'a rien oublié au passage. Il est vrai qu'il peut être galère de recopier du code qu'on ne comprend pas. Et on fait des erreurs dans la recopie que nos yeux seront incapables de détecter: c'est juste du charabia!

    A vous de trouver comment apprendre pour que ce soit autre chose que du charabia (et pour çà, il faut plus que recopier les solutions d'exercice).

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

  10. #10
    Futur Membre du Club
    Homme Profil pro
    etudiant python
    Inscrit en
    mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant python
    Secteur : Transports

    Informations forums :
    Inscription : mai 2019
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Vous avez raison. Mais un œil extérieur est utile.

    Je vous remercie pour votre aide.

    N'avez vous jamais buté sur un problème qui énerve beaucoup qu'un collègue étant extérieur à votre situation ne résolve en 2 minutes?
    Je me suis énervé sur ce problème pendant 2 mois avant de prendre contact avec un forum sans voir que j'avais la solution sous les yeux!

    C'est en me servant de votre message avec la solution que j'ai vu mon erreur qui était évidente!

    Je reprends mon bouquin et j'avance. J'ai souvent appris par l'erreur.

    Encore merci!

Discussions similaires

  1. Aide exo python
    Par Aurelenass dans le forum Exercices
    Réponses: 4
    Dernier message: 07/09/2017, 16h02
  2. Aide exercice 8.14 apprendre Python G.swinnen
    Par Asimoov dans le forum Tkinter
    Réponses: 1
    Dernier message: 25/03/2011, 04h08
  3. Besoin d'aide TP de première année INFO => Python
    Par bond70 dans le forum Général Python
    Réponses: 3
    Dernier message: 05/11/2008, 01h00

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