我正在编写一个程序来计算给定分子的质量。我已将每个元素定义为整数。我需要能够输入像NaCl这样的化学式,并打印出Na和Cl的原子质量之和。到目前为止,我已经设置了一些东西,以便我可以输入一个化学式,然后将它变成一个元素列表,所以如果我输入NaCl,它会给我[' Na',' CL&#39]。这是代码:
import re
Na = 22.99
Cl = 35.45
input = raw_input()
inputList = (re.findall('[A-Z][^A-Z]*', input))
首先,我需要知道如何告诉计算机我输入的是我之前定义的变量,而不是字符串。然后我想让它将列表中的每个项目分配给它自己的变量。像
这样的东西e1 = Na
e2 = Cl
我的主要问题是,此时我的输入被视为字符串。
答案 0 :(得分:2)
我相信你想要的是一本字典,就像这样:
atomic_wt = {'Na':22.99, 'Cl':35.45}
稍后,当您有输入时,可以循环访问它们:
for element in inputList:
elem_wt = atomic_wt[element]
答案 1 :(得分:2)
>>> elements = {'Na':22.99, 'Cl':35.45}
>>> result = ['Na', 'Cl']
>>> answer = sum(map(elements.get, result))
>>> answer
58.44
答案 2 :(得分:1)
使用字典,您可以轻松获取字符串输入并处理它:
elements = { 'Na': 22.99,
'Cl': 35.45
} # You can extend this dictionary to include more elements
print elements.get(raw_input('Enter an element symbol: ', 'invalid'))
"""
use the .get method to return a placeholder value,
representing that the *input* value doesn't exist in the dictionar
"""