我正在写一个作业来计算文件中元音的数量,目前在我的类里面我们只使用这样的代码来检查文件的结尾:
vowel=0
f=open("filename.txt","r",encoding="utf-8" )
line=f.readline().strip()
while line!="":
for j in range (len(line)):
if line[j].isvowel():
vowel+=1
line=f.readline().strip()
但是这次对于我们的作业,我们教授给的输入文件是整篇文章,所以整个文本中有几个空行来分隔段落等等,这意味着我当前的代码只能计算到第一个空行。
除了检查该行是否为空之外,还有什么方法可以检查我的文件是否已到达末尾?最好以与我当前的代码类似的方式,它在 while 循环的每次迭代中检查某些内容
提前致谢
不要以这种方式循环文件。而是使用 for
循环。
for line in f:
vowel += sum(ch.isvowel() for ch in line)
事实上你的整个程序只是:
VOWELS = {'A','E','I','O','U','a','e','i','o','u'}
# I'm assuming this is what isvowel checks, unless you're doing something
# fancy to check if 'y' is a vowel
with open('filename.txt') as f:
vowel = sum(ch in VOWELS for line in f for ch in line.strip())
就是说,如果您出于某些误入歧途的原因真的想继续使用 while
循环:
while True:
line = f.readline().strip()
if line == '':
# either end of file or just a blank line.....
# we'll assume EOF, because we don't have a choice with the while loop!
break