用字典计算质量重量

2024-10-01 09:40:59 发布

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

我对这个练习有困难:

我有这本字典:

masas = {'H': 1.007825, 'C': 12.01, 'O': 15.9994, 
         'N': 14.0067, 'S': 31.972071, 'P': 30.973762}

我的代码是:

def calcula_masa_atomica(molecula):
    masa = 0.0
    grupos = molecula.split('-')
    for grupo in grupos:
        grupo[0] = masas.keys():
        grupo[1] = masas.values()
    return masa

我试过了

print(calcula_masa_atomica('C13-H18-O2'))

然而,它没有起作用。我是Python新手,不知道发生了什么


Tags: 代码infor字典defkeyssplitvalues
1条回答
网友
1楼 · 发布于 2024-10-01 09:40:59

您没有为masa变量赋值,因此总是返回0。您可以尝试此示例以获得分子量:

masas = {
    "H": 1.007825,
    "C": 12.01,
    "O": 15.9994,
    "N": 14.0067,
    "S": 31.972071,
    "P": 30.973762,
}


def calcula_masa_atomica(molecula):
    masa = 0.0
    grupos = molecula.split("-")
    for grupo in grupos:
        masa += masas[grupo[0]] * float(grupo[1:])
    return masa


print(calcula_masa_atomica("C13-H18-O2"))

印刷品:

206.26964999999998

编辑:要处理没有数字的分子:

masas = {
    "H": 1.007825,
    "C": 12.01,
    "O": 15.9994,
    "N": 14.0067,
    "S": 31.972071,
    "P": 30.973762,
}


def calcula_masa_atomica(molecula):
    masa = 0.0
    grupos = molecula.split("-")
    for grupo in grupos:
        masa += masas[grupo[0]] * float(1 if (x := grupo[1:]) == "" else x)
    return masa


print(calcula_masa_atomica("C-H2-O2"))

印刷品:

46.02445

相关问题 更多 >