统计文本文件中前“X”个元音字母的数量?- while循环问题
我似乎无法让这个 while 循环正常工作。
我想创建一个叫做 count_vowels 的函数,它需要两个参数,一个是文本文件的名字(filename),另一个是一个数字(x)。这个函数应该打开指定的文本文件,然后用一个 while 循环来找到文件中前 x 个元音字母,并把它们以一个新的字符串形式返回。
举个例子,如果文本文件里有 "aeiou",而 x 的值是 2,那么输出的字符串应该是 "ae",而不是 "aeiou"。当然,实际使用中可能更像是,比如一个文本文件里有 "hello, I am a text file",如果 x 的值是 5,那么返回的结果应该是 "eoIaa"——也就是前 5 个元音字母。
我尝试的代码:
def count_vowels(filename,x):
text=open(filename).read()
vowels=("A","E","I","O","U","a","e","i","o","u")
count = 0
new_str=""
while count<x:
for char in text:
if char in vowels:
count+=1
new_str=new_str+char
print new_str
不幸的是,我得到的输出是文本文件中 每一个 元音字母的字符串。
2 个回答
0
你只需要去掉那个for循环。你现在告诉程序要做的事情是:
当计数小于X时 - 如果计数小于X,就一直循环(循环1)
对文本中的每个字母进行操作 - 查看文本文件中的每个字母,并保存元音字母(循环2)
循环2没有结束条件,所以它会一直进行,直到到达文件的末尾,而循环1在循环2处理完所有文本之前不会重新评估。
更新:
----这是一个只用while循环来实现的例子:
例子:
position = 0
count = 0
while count < x:
if text[position] in vowel:
new_char += text[position]
count+= 1
position += 1
(这个while循环将会遍历文本文件中的每个字符,而不使用for循环)
1
这是因为你的循环 for char in text
会先执行完毕,然后外面的 while
循环才会去检查 count
的值。
解决办法是去掉外面的循环,当 count
达到要求时直接退出 for
循环:
for char in text:
if char in vowels:
count += 1
new_str += char
if count >= x: break
print new_str