用户输入一个公式,例如: C12H2COOH
我们必须计算它的分子量,因为 C = 12.01,H = 1.008 和 O = 16。我们被告知要小心后面有两位数的元素和后面没有数字的元素。该程序还会不断询问化学式,并在您按回车键时退出。
我试过使用字典、for 循环和 while 循环。我已经计算了元素后的个位数化合物,例如 C2H2
但如果我在元素旁边放置两位数或不放置任何数字,它将失败。我也在研究如何在不删除分隔符的情况下分隔字符串作为一种可能的途径?你们将如何解决这个问题?任何帮助将不胜感激,谢谢!
这是我到目前为止所拥有的。很乱。
xxx = ["H", "C", "O"]
elements = set(xxx)
while(True):
chemical_formula = input("Enter chemical formula, or enter to quit: ")
if chemical_formula == "":
break
else:
characters = list(chemical_formula)
n = 0
print(characters)
for i in characters:
if characters[n] == "C":
c = 12.0107
if elements.intersection(set(characters[n+1])):
print(c)
else:
number = int(characters[n+1])
print(number*c)
elif characters[n] == "H":
h = 1.00794
if elements.intersection(set(characters[n+1])):
print(h)
else:
number = int(characters[n+1])
print(number*h)
elif characters[n] == "O":
o = 15.9994
if elements.intersection(set(characters[n+1])):
print(c)
else:
number = int(characters[n+1])
print(number*o)
else:
numero = int(i)
print(i*0)
n = n+1
原文由 Francis Bautista 发布,翻译遵循 CC BY-SA 4.0 许可协议
编辑: 更新了 GitHub Gist
我整个夏天都在上 12 年级的化学课程,我也想这样做。我想到了一种不同的方法,这里是版本 1(’ZERO’ 只是一个地方 Holder 我只是没有用”测试)我检查了 C12H2COOH 并给出了正确的答案(191.16 g/mol)。希望这可以帮助某人: