【问题标题】:How to provide periodic table information to Python module如何向 Python 模块提供周期表信息
【发布时间】:2013-12-07 10:39:30
【问题描述】:

我正在编写一个 Python 模块,我希望许多函数能够访问元素周期表上的信息;即原子序数及其对应的原子符号。信息永远不应该改变。我正在努力解决如何实现这一点。

哈希与元组:哈希将提供非常方便的查找,但可以轻松更改。至少一个元组是不可变的。

变量与类:我一直在尝试尽可能将模块中的所有内容都保存在类中,但我不确定这是否有意义,因为应该只有一个元素周期表。一种真实的来源。

也许我完全错过了一些东西。我只是从未见过有人在我看过的 Python 项目中硬编码这么多信息。非常感谢您的指导。

【问题讨论】:

  • dict 是哈希的 Python 术语。 dict 是否可以轻松更改有什么关系?你不打算改变它,是吗?我肯定会选择dict。另外,我在课堂上看不到任何意义。 “简单胜于复杂。”

标签: python types hardcode


【解决方案1】:

您总是可以从安装periodictable 开始,它看起来非常完整——即使您必须自己执行此操作,您也可以查看代码。我用过:

sudo pip install periodictable

然后能够做到:

>>> import periodictable as pt
>>> g = pt.Au
>>> g.isotopes
[171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205]
>>> g.density
19.3
>>> g.mass
196.96655
>>> g.name
'gold'
>>> 

我个人会为element 创建一个类,然后在该类的实例中对适当的成员进行编码。例如:

class Element(object):
    """ This class represents a single element in the periodic table """
    def __init__(self, Symbol, Name, Number, Group, Period, etc):
       """ 
       Initialises a single element instance all the above prarmeters are required 
       """
       self.Symbol = Symbol
       #etc

然后,您可以在元素周期表文件中定义每个元素,或者将它们组织成命名块或单个类等。

【讨论】:

  • 是的,我找到了这个。虽然我可以直接使用它,但它并不是我想要做的一个很好的例子(它要复杂得多)。大多数元素周期表对我来说是不必要的。当您说“在类的实例中编码适当的成员”时,我不确定您的意思是什么?
  • @pique 我添加了一个元素类的开头。
  • 好吧,我有一个基本上相当于这样一个元素类的东西,我只是对如何传递信息以及将这些信息保存在哪里以及这些选项的优缺点感到困惑。跨度>
  • 将信息存储在 self.由于命名属性将其作为初始化过程的一部分传递,因为它永远不会更改,如果您在基类中覆盖 self.__setattr__ ,则可以将基本特征设为只读。
  • 至于如何存储元素,我建议尝试捕获表格的结构,因为它可以从该结构中学习。但不要忘记,您可以通过多种方式访问​​数据,例如按名称、符号、数字、(行、列)等。
【解决方案2】:

很多人已经编码了the periodic table in textual form。询问他们的数据。例如,如果您的软件与 Wikipedia 的许可证兼容,则以编程方式从其中获取数据并将其放入某种数据库中,或者只是按需获取。

【讨论】:

  • 我想我的部分问题是提取数据并对其进行操作的最佳方式。我将数据放入文本文件没有问题,我正在询问更多关于 Python 中的实现。
猜你喜欢
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多