我对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个元素必须执行此操作似乎很多。好吧,我可以做到,但我相信有是一种更好,更简单的方法。
是否有可能做到我所要求的?谢谢。
答案 0 :(得分:1)
您可以使用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')