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 :

LA CHIMIE EN PYTHON


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2009
    Messages : 51
    Points : 37
    Points
    37
    Par défaut LA CHIMIE EN PYTHON
    bonjour,
    je viens de creer un script qui me permet d'extraire des données d'un fichier : dimetylether.log, ses données sont : (Coordonnées X, Y, Z et le nombre atomique Za)
    dont voici le 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
    from math import sqrt, pow
    lines = open("dimethylether.log", "r").readlines()
    chaine = "Standard orientation"
    #méthode qui permet de choisir le numéro de la conformation qu'on veut.
    def readXYZ(chaine, num_confo):
      for i, line in enumerate(lines):
     
        j = 5
        if chaine in line:
          Za = []
          X = []
          Y = []
          Z = []
          while j<14 :
    	Za.append( (float( (lines[i + j].split())[1]) ))
    	X.append( ( float( (lines[i + j].split())[3]) ))
    	Y.append( ( float( (lines[i + j].split())[4]) ))
    	Z.append( ( float( (lines[i + j].split())[5]) ))
    	j = j + 1
    Après cela je calcule l'energie de repulsion atomique avec la deuxieme partie de mon code qui est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    E = 0
          for i in range(len(Za) - 1):
     
    	for j in range(i+1,len(Za)):
    	  distance =  (sqrt(pow((X[i] - X[j]),2) + pow((Y[i] - Y[j]),2) + pow((Z[i] - Z[j]),2)))  / 0.5291772085936 
    	  E = E + ( (Za[i] * Za[j]) / distance )
          print(E)
          print("****************")
    Attention cette deuxieme partie est intégré dans la 1ere partie du code :
    Ma question est : Je voudrais créer 2 methodes séparé qui me permettent de faire le travail des 2 bout de code présenté, mon souci est que c'est 2 bout de code sont imbriqués l'un dans l'autre.

    methode 1 : def readXYZ(lines, j)
    methode 2 : def energy(Za, X, Y, Z)

    merci par avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    euh... ben si le code est imbriqué les appels seront imbriqués; readXYZ appelera energy. Où est le souci ? Ou alors j'ai mal compris la question...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2009
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    oui je suis d'accord, que les appeles seront imbriqué, mais j'arrive pas à restructurer mon code pour faire 2 methodes distincts qui remplise le meme role que maintenant.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Ben tu prends le second bout de code, tu le mets dans ta fonction energy et dans la fonction readXYZ tu remplaces le bout de code enlevé par un appel à energy(Za, X, Y, Z). Tu as déjà déterminé les bons paramètres à passer à cette fonction : Za, X, Y et Z.

    Mais si tu as écris le code ci-dessus, tu sais ce qu'est une fonction. Tu parles de "méthodes" mais ce ne sont pas vraiment des méthodes mais des fonctions. Les méthodes, elles sont à l'intérieur d'une classe.

    Si ça ne répond pas à ta question, pourrais-tu donner des précisions supplémentaires ?

Discussions similaires

  1. [langage] traduction d'un fonction python en perl
    Par ay_pepito dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2007, 15h06
  2. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  3. module .so pour python... ?!
    Par totoetlititi dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/03/2004, 14h51
  4. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

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