Python,小数之和

Python, sum of decimals

我想将一串字母拆分成一堆三元组,并为每个三元组分配数字,然后求出数字的总和。我设法编码直到号码分配部分。但无法生成弹出的 sum.Lot 错误。请帮忙。 P.S。我是一名生物学家,对编码一无所知。 这是我的部分代码:

gene_code = "abcdef"

split_strings = []
n  = 3
for index in range(0, len(gene_code), n):
    split_strings.append(gene_code[index : index + n])
print(split_strings)
import re
gene_code = gene_code.replace('abc','1.2,')
gene_code = gene_code.replace('def','2.3,')

print(gene_code)

输出结果如下

['abc', 'def']
1.2,2.3,

现在我想得到这些数字的总和。请帮忙?

您可以创建一个替换字典。请注意,替换需要写成数字,而不是字符串,以便能够进行计算。获得号码列表后,您可以调用 sum(list_of_numbers).

这是一些示例代码:

gene_code = "abcdef"
split_strings = [gene_code[i:i + 3] for i in range(0, len(gene_code), 3)]
replacements = {'abc': 1.2, 'def': 2.3}
numbers = [replacements[s] for s in split_strings]
print(sum(numbers))

如果某些字符串没有替换,此代码将出错。您可以添加一个测试并将这些数字替换为零:

numbers = [0 if not s in replacements else replacements[s]
           for s in split_strings]

注意上面的代码使用了list comprehension。这样,一个循环如:

new_list = []
for item in old_list:
   new_list.append(func(item))

可以写成

new_list = [func(item) for item in old_list]

一旦您习惯了这种表示法,您会发现它更易于阅读和维护。当您使用列表的列表时,它会变得特别有用。

读取文件:

replacements = {'abc': 1.2, 'def': 2.3}
with open("gene_codes.txt") as file:
    for gene_code in file.readlines():
        gene_code = gene_code.strip()
        # print(gene_code)
        split_strings = [gene_code[i:i + 3] for i in range(0, len(gene_code), 3)]
        numbers = [0 if not s in replacements else replacements[s]
                   for s in split_strings]
        print(sum(numbers))