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 :

aide exo 9.4 d'apprendre python 3 de Gerard Swinnen


Sujet :

Exercices Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    etudiant python
    Inscrit en
    Mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant python
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2019
    Messages : 16
    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, 116 affichages)

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    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
    Membre averti
    Homme Profil pro
    etudiant python
    Inscrit en
    Mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant python
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2019
    Messages : 16
    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
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    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
    Membre averti
    Homme Profil pro
    etudiant python
    Inscrit en
    Mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant python
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2019
    Messages : 16
    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.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    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

  7. #7
    Membre averti
    Homme Profil pro
    etudiant python
    Inscrit en
    Mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant python
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2019
    Messages : 16
    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

Discussions similaires

  1. Aide exo python
    Par Aurelenass dans le forum Exercices
    Réponses: 4
    Dernier message: 07/09/2017, 15h02
  2. Aide exercice 8.14 apprendre Python G.swinnen
    Par Asimoov dans le forum Tkinter
    Réponses: 1
    Dernier message: 25/03/2011, 03h08
  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, 00h00

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