我一直在寻找使用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"]))
一种简单快捷的方法是将每个元素设置为包含其原子质量的变量,然后对输入使用eval。修改示例将导致:
Eval是邪恶的,它为程序引入了许多安全隐患,尤其是以这种方式使用它时。我只建议在这里使用它,如果这是一个你自己的程序,如果出现问题,你可以重新启动
正确的方法是将字符串解析为语法,然后运行该语法。 要做到这一点,您需要使用lexer来标记您的输入,然后对这些标记应用语法来创建解析树。考虑到你的问题,这样做似乎太过分了
对于你的词法规则,我会使用类似于[A-Z][A-Z]的东西?对于元素
相关问题 更多 >
编程相关推荐