所以我对python很新,并且正在学习基础知识。我正在尝试创建一个函数来计算字符串中元音的数量,并返回每个元音在字符串中出现的次数。例如,如果我给它输入这个,那就是打印出来的。
>>>countVowels('Le Tour de France')
a, e, i, o, and u appear, respectively, 1,3,0,1,1 times.
我使用了这个帮助函数,但是我不确定如何使用它。
def find_vowels(sentence):
count = 0
vowels = "aeiuoAEIOU"
for letter in sentence:
if letter in vowels:
count += 1
print count
然后我想也许我可以使用格式化来将它们放在写入位置,但我不确定将使用的符号,例如,函数的其中一行可能是:
'a, , i, o, and u appear, respectively, {(count1)}, {(count2)}, {(count3)}, {(count4)}, {(count5)} times'
我不确定如何在函数中使用上述内容。
答案 0 :(得分:2)
您需要使用字典来存储值,因为如果您直接添加计数,则会丢失有关您正在计算的元音的信息。
def countVowels(s):
s = s.lower() #so you don't have to worry about upper and lower cases
vowels = 'aeiou'
return {vowel:s.count(vowel) for vowel in vowels} #a bit inefficient, but easy to understand
另一种方法是:
def countVowels(s):
s = s.lower()
vowels = {'a':0,'e':0,'i':0,'o':0,'u':0}
for char in s:
if char in vowels:
vowels[char]+=1
return vowels
打印这个,你会这样做:
def printResults(result_dict):
print "a, e, i, o, u, appear, respectively, {a},{e},{i},{o},{u} times".format(**result_dict)
答案 1 :(得分:1)
更简单的答案是使用Counter类。
def count_vowels(s):
from collections import Counter
#Creates a Counter c, holding the number of occurrences of each letter
c = Counter(s.lower())
#Returns a dictionary holding the counts of each vowel
return {vowel:c[vowel] for vowel in 'aeiou'}
答案 2 :(得分:0)
a =input("Enter string: ")
vowels = sum([a.lower().count(i) for i in "aeiou"])
print(vowels)
这也有效。不知道它是否效率更高或更低。它为每个aeiou制作清单并将其总结