2013-05-22 2 views
0

L'utilisateur saisira la formule chimique. Par exemple CO2OHC5H18COO. ou quelque chose comme ça. Ensuite, la sortie serait le poids moléculaire étant donné que C = 12,01, H = 1,008, O = 16. J'ai ce jusqu'à présent ...Comment calculer le poids moléculaire en python

while(True): 

    chemical_formula = input("Enter chemical formula, or enter to quit: ") 

    length = len(chemical_formula) 
    if chemical_formula == "": 
     break 
    else: 
     char = list(chemical_formula) 
     length = len(char) 
     for i in char: 
      if i == "C": 
       c = 12.0107 
      elif i == "H": 
       h = 1.00794 
      elif i == "O": 
       o = 15.9994 
      else: 
       if char[i-1] == "C": 
        print(float(i)*c) 
       elif char[i-1] == "H": 
        print(float(i)*h) 
       elif char[i-1] == "O": 
        print(float(i)*o) 

Mais je ne peux pas obtenir pourquoi je l'utilise (i-1) pour obtenir l'élément précédent dans la boucle for afin que je puisse le multiplier par le nombre. Y at-il un autre moyen d'obtenir l'élément précédent de la chaîne? ou peut-être y a-t-il une façon différente d'aborder ce problème? toute aide serait grandement appréciée. Merci d'avance!

Répondre

0

Vous devez itérer sur l'index non plus élément, fait comme l'exemple ci-dessous:

chemical_formula = input("Enter chemical formula, or enter to quit: ") 

length = len(chemical_formula) 
if chemical_formula == "": 
    break 
else: 
    char = list(chemical_formula) 
    length = len(char) 
    for i in range(length): 
     if char[i] == "C": 
      c = 12.0107 
     elif char[i] == "H": 
      h = 1.00794 
     elif char[i] == "O": 
      o = 15.9994 
     else: 
      if char[i-1] == "C": 
       print(float(i)*c) 
      elif char[i-1] == "H": 
       print(float(i)*h) 
      elif char[i-1] == "O": 
       print(float(i)*o) 
Questions connexes