Bonjour ,
Ci dessous un prog qui permet à partir d'une composition volume de calculer la composition poids comme suit :
% masse = % vol * pme/pmm ( pme étant le poids molaire de l’élément , pmm le poids molaire du mélange , celui ci calcule par ailleurs)
combvp est la composition volume ,fg7mw étant le poids mol des éléments
combvp = [[15, 6, 3, 1, 75],[1,0,21,1,77]]
combwp =[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]]
an = 0
fg7mw = [18.02, 44.01, 32, 39.94, 28.02] # poids molaire 5 elts
while an < 2 :
for j in range(0,5):
combwp[an][j] = combvp[an][j]*fg7mw[j])/mwc[an]
an = an + 1
Il se trouve que :
le calcul est bien effectué pour an =0 et an = 1 aussi, mais il se trouve que il est affecte aux deux sous listes les résultats du calcul ! je me trouve donc avec le résultat suivant :
an = 0 mw[0]= 27.7 combwp=[[9.7,9.5,3.4,1.4,75.8],[9.7,9.5,3.4,1.4,75.8]]
an = 1 mw[1] = 28.5 combwp=[[0.6,0.,23.5,1.4,74.9],[0.6,0.,23.5,1.4,74.9]]
alors que le resultat voulu est :
combwp =[[9.7,9.5,3.4,1.4,75.8],[0.6,0.,23.5,1.4,74.9]]
J'ai beau chercher , je cale !! dur , dur avec moi python….Qui voit le pb?
J'ai remplacé range par while , toujours pareil !
# pythonicité
Posté par Papey . Évalué à 4.
Salut,
il me semble que tu utilises le nom "mwc" et non "mw" dans ta boucle. Quand je reprends ton code avec le bon nom de variable, j'obtiens le résultat que tu dis attendre.
De plus il y a une parenthèse fermante en trop dans ton opération arithmétique.
[^] # Re: pythonicité
Posté par Papey . Évalué à 5.
Par rapport au titre de mon commentaire, un code un peu plus idiomatique serait le suivant (mais on peut sans doute apporter d'autres améliorations) :
```
combvp = [[15, 6, 3, 1, 75],
[ 1, 0, 21, 1, 77]]
fg7mw = [18.02, 44.01, 32, 39.94, 28.02]
mw = [27.7, 28.5]
combwp = [ [ combvp[i][j] * fg7mw[j] / mw[i] for j in range(len(combvp[0])) ] for i in range(len(mw)) ]
```
[^] # Re: pythonicité
Posté par Papey . Évalué à 5.
Et avec la bonne mise en forme :
# resolu
Posté par osenon (site web personnel) . Évalué à 1.
J'ai compris le pb et j'ai pu le résoudre.En début de prog je définis combwp=[[0,0,0….]]*k ,k étant le nombre de combustible,donc les data se copient automatiquement;on résoud le pb en mettant dans la boucle une variable intermédiaire et en affectant à combwp après la boucle.
Je manque d'un bon bouquin,python pour les nuls c'est nul……
Merci pour vos participations.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.