当,和字符串包含听写器的键时,是否可以使用字符串进行计算

2024-06-07 02:18:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在寻找使用str输入值的方法,其中(str的)一些值是我拥有的字典的键。然后使用关键点的值进行计算。这很难解释,但下面是一个例子:

我有一个元素周期表中每个元素的字典(每个字典包含元素的质量,键为“原子量”(H的质量为1.008u

我想计算分子质量,当输入字符串是例如:“H*2+O”,它是H20(18u)

以下是我目前的情况:

molecularmass = str(input("Write which molecular mass you want f.example: H*2+O this is H2O (water): "))
for sym in element.keys():
    if element[sym]["Sym"] in molecularmass:
    print(element[sym]["Sym"])
    molecularmass.replace(element[sym]["Sym"], str(element[sym]["Atomic weight"]))

Tags: 方法in元素字典质量element分子例子
1条回答
网友
1楼 · 发布于 2024-06-07 02:18:37

一种简单快捷的方法是将每个元素设置为包含其原子质量的变量,然后对输入使用eval。修改示例将导致:

molecularmass = str(input("Write which molecular mass you want f.example: H*2+O this is H2O (water): "))
        for sym in element.keys():
            if element[sym]["Sym"] in molecularmass:
                print(element[sym]["Sym"])
                molecularmass.replace(element[sym]["Sym"], str(element[sym]["Atomic weight"]))
        print(eval(molecularmass))
      

Eval是邪恶的,它为程序引入了许多安全隐患,尤其是以这种方式使用它时。我只建议在这里使用它,如果这是一个你自己的程序,如果出现问题,你可以重新启动

正确的方法是将字符串解析为语法,然后运行该语法。 要做到这一点,您需要使用lexer来标记您的输入,然后对这些标记应用语法来创建解析树。考虑到你的问题,这样做似乎太过分了

对于你的词法规则,我会使用类似于[A-Z][A-Z]的东西?对于元素

相关问题 更多 >