算法竞赛入门经典(第二版)——第三章数组和字符串习题解答(二)3.2

"""
算法竞赛入门经典P57习题3-2
给出一种物质分子式(不带括号),求分子量。本题中只是包含4种原子,分别为C,H,O,N
分子量分别为12.01,1.008,16.00,14.01(单位:g/mol)。
例如,C6H5OH的分子量为94.108g/mol.
"""
def molar_mass(string, dt):
    molar_sum = 0
    for ch in range(1, len(string)):
        if string[ch-1].isalpha() and string[ch].isdigit():
            molar_sum = molar_sum + dt[string[ch-1]] * int(string[ch])
        if string[ch-1].isalpha() and string[ch].isalpha():
            molar_sum = molar_sum + dt[string[ch-1]]
        if ch == len(string)-1 and string[ch].isalpha():
            molar_sum = molar_sum + dt[string[ch]]
    return molar_sum

if __name__ == '__main__':
    string = 'C6H5OH'
    dt = {'C':12.01, 'H':1.008, 'O':16.00, 'N':14.01}
    molar_sum = molar_mass(string, dt)
    print(molar_sum)

猜你喜欢

转载自blog.csdn.net/woai8339/article/details/82562452