函数不断返回 None

Function keeps returning None

我正在尝试编写一个函数来计算输入文件中有多少行以 'AJ000012.1' 开头,但我的函数一直返回 None。我是初学者,不完全确定问题出在哪里以及为什么会不断发生。答案应该是 13,当我只写代码时,例如:

    count=0
    input=BLASTreport
    for line in input:
    if line.startswith('AJ000012.1'):
        count=count+1
    print('Number of HSPs: {}'.format(count))

我答对了。当我尝试将其设为函数并调用它时,它不起作用:

    def nohsps(input):
        count=0
        for line in input:
            if line.startswith('AJ000012.1'):
            count=count+1
            return

    ans1=nohsps(BLASTreport)
    print('Number of HSPs: {}'.format(ans1))

非常感谢任何帮助,谢谢!

(如果您想知道,HSP 代表高得分片段对。输入文件是一个 BLAST 报告文件,其中列出了 DNA 序列的比对结果)

当您只是 return 而没有指定您正在 return 什么时,您将不会 return 任何东西。它将是 None。你想要return某事。根据您的规格,您想要 return count。此外,您在 for 循环中 returning,这意味着您永远不会得到您期望的计数。你想计算匹配项的所有出现次数,所以你需要将这个 return 移到你的循环之外:

def nohsps(input):
    count=0
    for line in input:
        if line.startswith('AJ000012.1'):
        count=count+1
    return count