如果我在名为documents:
的目录中有一个文本文件(sequencedata.txt
)
/~/documents/sequencedata.txt
如何定义名为sequenceinfo
的函数,该函数将计算上述途径文件中以#
开头的条目数,并使用语法"there are * entries"
返回此计数, *
是计入的条目数?
到目前为止我所拥有的:
#!/usr/bin/python
def sequenceinfo(sequencedata):
my_file = open("/~/documents/sequencedata.txt")
my_dna = my_file.read()
ecoliseq = my_dna.count('#')
return ecoliseq
print("There are " + str(ecoliseq) + " sequences")
答案 0 :(得分:3)
这里有一些事情:
在ecoliseq
函数之外看不到名称sequenceinfo
。因此,print
行会引发NameError
,因为Python无法找到ecoliseq
。但是,函数返回ecoliseq
,这意味着您可以通过调用函数然后打印结果来访问其值。
您让sequenceinfo
接受了一个从未使用过的参数。这应该是文件的路径吗?我会假设它是,但如果没有,你应该删除它。
这不是一个主要问题,但是当你完成它时你没有关闭文件。您应始终管理并正确释放程序所需的资源。使用文件执行此操作的最简单方法是使用with-statement打开它们,这将自动为您关闭它们。
总之,您的代码应如下所示:
#!/usr/bin/python
def sequenceinfo(path):
with open(path) as my_file:
my_dna = my_file.read()
ecoliseq = my_dna.count('#')
return ecoliseq
print("There are " + str(sequenceinfo("/~/documents/sequencedata.txt")) + " sequences")
此外,可能存在第四个问题,my_dna.count('#')
将返回文件中每个 #
的计数。但是你在问题中说过你只想计算以#
开头的条目。如果是这样,您将需要修复此错误。