For循环只打印Python中的最后一个值

For循环只打印Python中的最后一个值,python,python-3.x,Python,Python 3.x,我是一名编程新手,我学习Python的时间很短。下面,我试着写一个代码,计算样本DNA序列中的核苷酸,这是ROSALIND提出的一个问题 nucleotides=['A','C','G','T'] string='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC' for n in nucleotides: a = string.count (n) prin

我是一名编程新手,我学习Python的时间很短。下面,我试着写一个代码,计算样本DNA序列中的核苷酸,这是ROSALIND提出的一个问题

nucleotides=['A','C','G','T']

string='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'

    for n in nucleotides:

        a = string.count (n)

        print ("The count for",n,"is:",a)
输出为:

The count for T is: 21
问题是我的代码只打印核苷酸数组中最后一个元素的结果,即“T”。我知道我在问一个愚蠢的问题,但我试图通过在这里和网上搜索来找到答案,但没有成功。这就是为什么,如果您能更正代码并向我解释为什么我的循环没有打印每个核苷酸的计数,我将不胜感激


非常感谢

我会检查代码中的缩进,因为它在您的问题中不正确。这个片段应该可以工作

nucleotides=['A','C','G','T']

string='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'

for n in nucleotides:
    a = string.count (n)
    print ("The count for",n,"is:",a)

我会检查你代码中的缩进,因为它在你的问题中是不正确的。这个片段应该可以工作

nucleotides=['A','C','G','T']

string='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'

for n in nucleotides:
    a = string.count (n)
    print ("The count for",n,"is:",a)

我在sublime上尝试了这个代码,得到了以下结果

('The count for', 'A', 'is:', 20)
('The count for', 'C', 'is:', 12)
('The count for', 'G', 'is:', 17)
('The count for', 'T', 'is:', 21)

我认为代码的问题在于不必要地缩进for循环。确保使用正确的缩进。

我在sublime上尝试了代码,得到了以下结果

('The count for', 'A', 'is:', 20)
('The count for', 'C', 'is:', 12)
('The count for', 'G', 'is:', 17)
('The count for', 'T', 'is:', 21)

我认为代码的问题在于不必要地缩进for循环。确保使用正确的缩进。

您的问题是其他答案指出的缩进

或者,您可以使用from collections获取包含每个字母出现频率的词典。然后循环你的核苷酸来打印频率

from collections import Counter

nucleotides=['A','C','G','T']
string='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
counts = Counter(string)

for n in nucleotides:
    a = counts[n]
    print ("The count for",n,"is:",a)
输出


你的问题是其他答案指出的缩进

或者,您可以使用from collections获取包含每个字母出现频率的词典。然后循环你的核苷酸来打印频率

from collections import Counter

nucleotides=['A','C','G','T']
string='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
counts = Counter(string)

for n in nucleotides:
    a = counts[n]
    print ("The count for",n,"is:",a)
输出


除了在for循环中添加了一个额外的制表符之外,您的代码实际上正在工作。您可以尝试以下稍微改进的方法:

# define nucleotides 
nucleotides=['A','C','G','T']
# define dna chain
string='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'

# iterate through the dna chain and count 
# the number of appearances for each nucelotide.
for nucl in nucleotides:
    x = string.count(nucl)
    print ("The count for " + nucl + " is: " + str(x))

除了在for循环中添加了一个额外的制表符之外,您的代码实际上正在工作。您可以尝试以下稍微改进的方法:

# define nucleotides 
nucleotides=['A','C','G','T']
# define dna chain
string='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'

# iterate through the dna chain and count 
# the number of appearances for each nucelotide.
for nucl in nucleotides:
    x = string.count(nucl)
    print ("The count for " + nucl + " is: " + str(x))

Python对缩进很敏感。确保print语句相对于for语句缩进。此处的缩进是否与代码中的缩进匹配?我怀疑你的代码在for循环之外有print语句,但是这里看起来不是这样的。下面的答案解决了你的问题吗?如果他们这样做了,那么就把你认为最好的答案标记为被接受。因为您似乎对堆栈溢出还不熟悉,所以应该了解Python对缩进很敏感。确保print语句相对于for语句缩进。此处的缩进是否与代码中的缩进匹配?我怀疑你的代码在for循环之外有print语句,但是这里看起来不是这样的。下面的答案解决了你的问题吗?如果他们这样做了,那么就把你认为最好的答案标记为被接受。由于您似乎不熟悉堆栈溢出,因此应该阅读