感谢您的帮助和耐心等待。

我是python的新手,正在尝试计算特定原子符号出现的次数除以原子总数。因此该函数接受字符串列表作为参数,并返回包含'C','H','O'和'N'的分数的列表。但是我不断获得一个结果,而不是为每个原子获得全部。我的尝试如下:

Atoms = ['N', 'C', 'C', 'O', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'O', 'H']

def count_atoms (atoms):
    for a in atoms:
        total = atoms.count(a)/len(atoms)
        return total


然后

faa = count_atoms(atoms)
print(faa)


但是我只得到一个结果0.07692307692307693。我应该得到一个以[0.23076923076923078,.. etc]开头的列表,但我不知道该怎么做。我应该使用for循环和return语句计算分子中'C','H','O'和'N'原子符号的分数。 :(请帮助,将不胜感激。

最佳答案

好吧,您在第一个循环中返回变量total。为什么不使用列表存储值?像这样:

atoms = ['N', 'C', 'C', 'O', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'O', 'H'] #python is case sensitive!

def count_atoms (atoms):
    return_list = [] #empty list
    for a in atoms:
        total = atoms.count(a)/len(atoms)
        return_list.append(total) #we add a new item
    return return_list #we return everything and leave the function

10-08 16:24