我需要编写一个函数,它接受一个表示filename作为参数的字符串,例如letter_count( 'alphabet.txt')。 该函数应该打开文件并返回它包含的字母数(不是数字或其他字符)。
很抱歉包括doctest,但我认为这有助于让尝试实现的目标更加明显。
def letter_count(filename):
"""
>>> letter_count("anthem.txt")
177
>>> letter_count("digits.txt")
0
>>> letter_count("phrase.txt")
10
"""
myfile = filename
count = 0
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
text = myfile.readlines()
for char in text:
if char in letters:
count += 1
return count
import string
myfile = open(filename, 'r')
myfile.close()
if __name__=="__main__":
import doctest
doctest.testmod(verbose=True)
显然我犯了一个错误,但我无法指出,有什么建议吗?
答案 0 :(得分:1)
您的文件仅在您的功能之外打开。
试试这个:
def letter_count(filename):
count = 0
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
with open(filename) as f:
for line in f:
for char in line:
if char in letters:
count += 1
return count
修改:点击closer look语句with
,这里非常方便。
答案 1 :(得分:0)
另一个解决方案是在函数中添加在函数中打开.txt
文件的功能,例如,函数bellow会接受一个字符串,然后在函数中打开文件:
def parseCSV(A):
file = open(A,'r')