将用户输入变量用于稍后的等式中

时间:2015-10-20 00:59:06

标签: python python-2.7

我正在编写一个程序来计算给定分子的质量。我已将每个元素定义为整数。我需要能够输入像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

我的主要问题是,此时我的输入被视为字符串。

3 个答案:

答案 0 :(得分:2)

我相信你想要的是一本字典,就像这样:

atomic_wt = {'Na':22.99, 'Cl':35.45}

稍后,当您有输入时,可以循环访问它们:

for element in inputList:
    elem_wt = atomic_wt[element]

答案 1 :(得分:2)

使用sum()map()函数从字典中添加适当的值:

>>> 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
"""