gpt4 book ai didi

python - 如何将系数与列表中的变量分开?

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:18 25 4
gpt4 key购买 nike

所以,我的问题涉及的内容比标题所暗示的要多一些。我正在编写一个程序来计算化合物的摩尔质量。到目前为止,我让它适用于每种元素不超过一种的化合物,如 NaCl,但我需要它能够计算 H2O 等物质的质量。这是我到目前为止的代码:

import re
atomic_wt = {'Na':22.99, 'Cl':35.45, 'H':1.008, 'O':16}
input = raw_input()
elementList = (re.findall('[A-Z][^A-Z]*', input))
wt_list = []

for element in elementList:
elem_wt = atomic_wt[element]
wt_list.append(elem_wt)

# print elem_wt

print "%sg" % sum(wt_list)

当我输入 H2O 之类的内容时,它会返回错误,指出 H2 不在我的字典中。你建议我如何将 H 与 2 分开?而且,您建议我如何告诉它在相加之前将元素的值乘以它们的系数?

最佳答案

我对您的代码进行了某些修改,以将系数与您使用正则表达式取出的元素分开。

import re
atomic_wt = {'Na':22.99, 'Cl':35.45, 'H':1.008, 'O':16}
input = raw_input()
elementList = (re.findall('[A-Z][^A-Z]*', input))
wt_list = []

for element_withcoeff in elementList:
#Separate the coefficients
coeffList = re.findall(r'\d+', element_withcoeff)
if len(coeffList) < 1:
coeff = 1 #If no coefficent is defined use 1 as default
else:
coeff = int(coeffList[0])

#Separate the element name for dictionary lookup
element = filter(lambda c: not c.isdigit(), element_withcoeff)
print coeff, element

#Calculate using coeff
elem_wt = coeff * atomic_wt[element]
wt_list.append(elem_wt)

print "%sg" % sum(wt_list)

注意:我不是化学专业的学生,​​因此请确保计算摩尔质量 id 的逻辑正确与否。

关于python - 如何将系数与列表中的变量分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33227323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com