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 :

Philosophie Python: mieux ecrire un programme


Sujet :

Python

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Points : 14
    Points
    14
    Par défaut Philosophie Python: mieux ecrire un programme
    Bonjour,
    ayant pas mal programme en Fortran, j'essaie (peniblement) de passer au Python.
    J'ai ecris un petit programme qui lit un fichier (2 colonnes, 1 texte et 1 reelle), je cree une 3e colonne reelle.
    Je classe le tableau de 3 colonnes suivant la dernierement creee, et je reecris le resultat dans un nouveau fichier.
    Ce programme tourne, mais je ne le trouve pas "elegant", et je me demandais comment le rendre davantage "Python compatible"...
    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
     
    per=35.5496
    t0=2456023.533
     
    serie = []
    seriall = []
     
    liste = open('spec_supn.lst', 'r')
    for line in liste:
        ligne = line.replace('\n','')
        cols =  ligne.split()
        time=float(cols[1])
        phi=(time-t0)/per
        phi=phi-int(phi)
        serie=(cols[0],time,phi)
        seriall.append(serie)
    liste.close()
     
    seriall.sort(key=lambda serie: serie[2])
     
    classe = open('spec_supn_c.lst', 'w')
    for serie in seriall:
        classe.write('{:18s}'.format(serie[0]))
        classe.write('{:17.8f}'.format(serie[1]))
        classe.write('{:12.8f}'.format(serie[2]))
        classe.write('\n')
    classe.close()
    Si je suis hors-sujet j'en suis desole.

    Bonne fin de journee!

  2. #2
    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,

    J'écrirais plutôt cela ainsi:
    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
    per=35.5496
    t0=2456023.533
     
    seriall = []
     
    with open('spec_supn.lst', 'r') as liste:
        for line in liste:
            u, v =  line.split()
            v = float(v)
            phi = (v-t0)/per
            phi = phi - int(phi)
            seriall.append( (u, v, phi) )
     
    seriall.sort(key=lambda serie: serie[2])
     
    with open('spec_supn_c.lst', 'w') as classe:
        for u, v, w in seriall:
            classe.write(f'{u:18s}{v:17.8f}{w:12.8f}\n')
    Désolé si çà décoiffe.

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

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    J'écrirais plutôt cela ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open('spec_supn.lst', 'r') as liste:
        for line in liste.splitlines():
    Je ne comprends pas pourquoi tu utilises .splitlines() et pas for line in liste: tout court?
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  4. #4
    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 CosmoKnacki Voir le message
    Je ne comprends pas pourquoi tu utilises .splitlines() et pas for line in liste: tout court?
    Parce que çà m'évite d'ajouter une instruction qui va virer les fin de lignes qui ne servirait à rien vu qu'il sera mangé par le u, v = line.split(). Je corrige.

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

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Ok, c'était pour faire un chomp sans à boire! avoir à utiliser .rstrip() après coup.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Bonjour,
    ca decoiffe mais c'est tres bien pour mon evolution
    Merci infiniment!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ecrire par programmation sur une feuille protégé !
    Par Freiya dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2007, 21h54
  2. Réponses: 3
    Dernier message: 31/05/2007, 01h52
  3. Ecrire des programmes compatibles DEP
    Par hardballer dans le forum Windows
    Réponses: 5
    Dernier message: 03/04/2007, 15h02
  4. Réponses: 13
    Dernier message: 11/01/2007, 14h13
  5. Palm 5: Ecrire un programme pour Clié
    Par clovis dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/11/2006, 12h54

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