Calculateur de masse molaire
Pirate91gb
-
Pirate91gb -
Pirate91gb -
Bonjour,
Je cherche à créer une fonction python permettant de calculer la masse molaire (masse d'une molécule selon un paquet) avec une base de données sous la forme d'un dictionnaire tel que :
En effet, le problème vient du fait que l'utilisateur entre un string, qu'il le décompose caractères suivis de coefficients (integers). Ainsi, on peut voir que H et He commencent avec les mêmes caractères. Je voudrais donc que j'obtienne 18 g/mol quand j'utilise
De plus, je voudrais transformer cette liste
Dans l'attente de votre réponse,
Je cherche à créer une fonction python permettant de calculer la masse molaire (masse d'une molécule selon un paquet) avec une base de données sous la forme d'un dictionnaire tel que :
base = {"H":1,"He":4,"Li":7,"Be":9,"B":11,"C":12,"N":14,"O":16,"F":19,"Ne":20,"Na":23,"Mg":24,"Al":27,"Si":28,"P":31,"S":32,"Cl":35,"Ar":40}
En effet, le problème vient du fait que l'utilisateur entre un string, qu'il le décompose caractères suivis de coefficients (integers). Ainsi, on peut voir que H et He commencent avec les mêmes caractères. Je voudrais donc que j'obtienne 18 g/mol quand j'utilise
calcul("H2O").
De plus, je voudrais transformer cette liste
liste = ["H","2","O"]en
liste=["H",2,"O"], la différence est que 2 n'est plus du types str, mais int.
Dans l'attente de votre réponse,
A voir également:
- Comment calculer la masse molaire
- Comment calculer la moyenne sur excel - Guide
- Renommer des fichiers en masse - Guide
- Dispositif de stockage de masse usb - Télécharger - Pilotes & Matériel
- Comment calculer un total sur excel - Guide
- Comment calculer une note sur 20 ✓ - Forum Bureautique
3 réponses
Salut !
Alors pour décomposer le string en list, tu peux utiliser simplement : list(str) :
Ensuite, pour transformer tes chiffres en int, tu peux utiliser :
Ou la version condensée :
Et j'ai pas compris exactement ce que tu veux avec les H, He... la manière la plus simple est de "couper" ta liste avant chaque majuscule.
Si j'ai mal répondu dis moi je garde le sujet dans mes suivis...
Bon courage !
--
Cordialement.
Alors pour décomposer le string en list, tu peux utiliser simplement : list(str) :
>>> list("mon_string") ['m', 'o', 'n', '_', 's', 't', 'r', 'i', 'n', 'g']
Ensuite, pour transformer tes chiffres en int, tu peux utiliser :
>>> for i, x in enumerate(liste): ... if x.isdigit(): ... liste[i] = int(x)
Ou la version condensée :
liste = [int(x) if x.isdigit() else x for x in liste]
Et j'ai pas compris exactement ce que tu veux avec les H, He... la manière la plus simple est de "couper" ta liste avant chaque majuscule.
Si j'ai mal répondu dis moi je garde le sujet dans mes suivis...
Bon courage !
--
Cordialement.
Oui bonjour,
J'ai pu trouver la réponse. Mon professeur a dit que je réfléchissais de manière complexe. Alors j'ai fait ça :
Quand je fais
Merci de ton aide
J'ai pu trouver la réponse. Mon professeur a dit que je réfléchissais de manière complexe. Alors j'ai fait ça :
base = {"H":1,"He":4, "Li":7,"Be":9,"B":11,"C":12,"N":14,"O":16,"F":19,"Ne":20, "Na":23,"Mg":24,"Al":27,"Si":28,"P":31,"S":32,"Cl":35,"Ar":40} def dic_mol(molecule): mol = 0 for i in molecule.keys(): for j in base.keys(): if i == j: mol += base[j]*molecule[i] return mol
Quand je fais
dic_mol({"H":2,"O":1})j'obtiens bien 18 g/mol
Merci de ton aide
Pour calculer la masse molaire, il faut prendre la valeur de la molécule dans le dictionnaire base, le multiplier par le chiffre juste après :
Par exemple ; M(H2O) = M(H)*2 (car le 2 juste après est là pour dire qu'il y a 2 hydrogène) + M(O) = 2*1 + 16 = 18 g/mol
Je voulais juste savoir précisément où tu avais besoin d'aide !
Histoire de t'avancer un peu, en continuant sur mon idée qui est peut-être la plus simple... Du moins la plus simple à imaginer et qui me vient en tête, tu peux utiliser cette fonction pour découper les atomes :
Exemple d'entrée : "CoCl3" --> ["Co", "Cl3"]
Si ta formule est correctement et que mes cours de chimie sont pas trop loin, le chiffre se trouve toujours après la lettre, il te suffit de vérifier si le dernier élément de chaque molécule est une chiffre, et si oui, le retirer puis t'en servir comme coefficient, sachant que ce qu'il te reste dans le string après, c'est la clef de ton dictionnaire...
Bon courage