Py学习  »  Python

Python,小数之和

lakshmeesha KN • 3 年前 • 1555 次点击  

我想把一串字母分成一串三元组,给每个三元组分配数字,然后求出数字的和。我设法编码到指定号码的部分。但无法生成总和。出现了很多错误。请帮忙。另外,我是一名生物学家,对编码一无所知。 这是我的部分代码:

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,

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131056
文章 [ 1 ]  |  最新文章 3 年前
JohanC
Reply   •   1 楼
JohanC    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))