函数不断返回 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
我正在尝试编写一个函数来计算输入文件中有多少行以 '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