核苷酸计数脚本(填补空白)

2024-10-02 12:32:09 发布

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

我需要完成代码,以便创建一个脚本来计算dna片段中的核苷酸。我都不知道该怎么开始。你知道吗

以下是练习:

上面,我们手工创建了counts字典。替换下面代码片段中的uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。你知道吗

dna = 'AGGTCCCAATGA'
counts = ____
for nucleotide in dna:
    counts[____] = ____
for nucleotide in counts:
    print(f'{____} occurs {____} times')

在第二行,你想要一本空字典,如果你想到你是如何得到一个空列表或集合的,你对dict的猜测是什么?如有必要,请检查文档。你知道吗


Tags: 代码in脚本for字典dna手工print
3条回答

这是一个有点令人困惑的问题。这意味着您需要一个空的dict,但是空的dict对于后面的代码来说并不适用。有多种可能的答案。你知道吗

在我认为最好的答案中,你不想要一个实际的空的dict,而是一个以每个核苷酸的零计数开始的。这是因为下面循环的目的是将计数相加。要获得所有零计数,请使用

counts = {'A': 0, 'C': 0, 'G': 0, 'T': 0}

这是因为你知道有四种可能的核苷酸:A, C, G, T。你能从那里继续吗?你知道吗

还有一种选择:

counts = {}

或者

counts = dict()

然后,可能需要使用dictget方法或if三元运算符使下一行的空格更复杂。这比你需要的要复杂得多。另外,如果一个核苷酸不在字符串中,那么它将不会被打印在输出中,而问题似乎希望看到计数为零。你知道吗

另一种解决方案是使用Python的defaultdict类,但这似乎不适合您的问题,因为它提到了dict,并且没有为您提供导入该类的空间。你知道吗

另一种选择,最简单的方法是使用Counter对象。但这需要对代码进行完全重写,尽管最终结果是最简单的。你知道吗

还有其他替代方案,其中大多数都需要更改代码。你知道吗

创建一个字典(counts),然后检查该字母是否在字典中。如果是,则增加值(+=),否则将值初始化为1。然后打印结果。你知道吗

dna = 'AGGTCCCAATGA'
counts = {}
for nucleotide in dna:
    if nucleotide in counts:
        counts[nucleotide] += 1
    else:
        counts[nucleotide] = 1
for nucleotide in counts:
    print(f'{nucleotide} occurs {counts[nucleotide]} times')

结果:

A occurs 4 times
G occurs 3 times
T occurs 2 times
C occurs 3 times

非常类似于下面的解决方案。你知道吗

dna = 'AGGTCCCAATGA'
counts = {}
for nucleotide in dna:
    if nucleotide not in counts:
        counts[nucleotide] = 0
    counts[nucleotide] += 1

for nucleotide in counts:
    print(f'{nucleotide} occurs {counts[nucleotide]} times')

相关问题 更多 >

    热门问题