我对Python相当陌生,我刚刚开始使用类。我想做一个化学计算器(计算摩尔质量,浓度等)。我希望到目前为止一切都正确。我的问题是:(希望我能正确表达自己的观点)如何通过用户输入调用类实例化?
我有以下课程:
class Elements:
def __init__(self, name='',atomic_mass=0.0):
self.name = name
self.atomic_mass = atomic_mass
并且我(希望我正确地说明了这一点)将其实例化为:
nitrogen = N = Elements('Nitrogen', 14.01)
我写了
nitrogen
和N
是因为我想知道用户输入是否想将其命名为nitrogen
或N
。另外,这是最好的方法吗?我对所有元素及其几乎所有属性都已经完成了一半。现在,对于我自己,我可以做:
print(N.atomic_mass)
,我会得到14.01
关于我的问题,我将如何实现以下目标:
element_name = input('Insert element name: ')
print(element_name.atomic_mass)
然后获得想要的值。我需要这样做是因为如果我想通过用户输入来计算分子的质量,则有必要将字符串拆分,找到元素并将其链接到属性。
我已经尝试过this,但是它没有用。
我知道我可以做到:
if element_name == 'N':
print(N.atomic_mass)
但是,对于周期表的118个元素必须执行此操作似乎很多。我可以做到,但我相信必须有一个更好,更轻松的方法。
甚至可以按照我的要求做吗?谢谢。
最佳答案
代替每个元素的类实例,可以使用dict
。
(顺序并不重要,因为“ dict”不保留顺序)
该字典可以直接保存值,也可以保存Element
实例
elements = {
'Nitrogen': 14.01,
'Carbon': 12.0,
...
}
要么
elements = {
'Nitrogen': Element('Nitrogen', 14.01),
...
}
然后,您可以通过以下方式使用它:
element_name = input('Insert element name: ')
print('atomic mass:', elements[element_name])
注意:如果用户输入无效的元素,这可能会引发
KeyError
,因此您可以添加错误检查element_name = input('Insert element name: ')
try:
print('atomic mass:', elements[element_name])
except KeyError:
print('the element does not exist')