我是Stack Overflow的新手,但注意到它很有帮助,因此打开了这个社区。只是好奇是否有任何方法可以使此元音计数器更简洁/更有条理。任何帮助将不胜感激,并且深入的回答也将是很棒的。谢谢!
def vowel_count(str):
str = input("Please enter a sentence: ")
str1 = (str.lower())
#intialize count variable to zero
count = 0
#create a set of vowels
vowel = set("aeiou")
for alphabet in str1:
if alphabet in vowel:
count = count+1
print("Number of vowels in this sentence is: " , count)
print()
print("A,E,I,O,U")
print(*map(str.lower().count, "aeiou"))
vowel_count(str)
答案 0 :(得分:1)
我看到在您的代码示例中,您使用了一个名为str的变量。不要这样做,因为str是内置函数,这可能会导致问题。
该解决方案如何?
string = input().lower()
print(sum([string.count(i) for i in "aeiou"]))
首先,我得到输入,我立即降低了输入。 然后,我为每个元音使用string.count(i),在这种情况下,它返回i(元音之一)出现在字符串(输入)中的次数。 然后,我在创建的数组上调用sum函数,该函数返回数组中所有元素的总和。最后但并非最不重要的一点是,我只打印了此求和函数返回的值。
如果您不了解传递给sum函数的参数是一个数组,请查看List Comprehension的主题。
答案 1 :(得分:0)
我认为您应该使用Counter。
from collections import Counter
In [1]: a = 'I am mayank'
In [5]: ans = Counter(a.lower())
In [6]: ans
Out[6]: Counter({' ': 2, 'a': 3, 'i': 1, 'k': 1, 'm': 2, 'n': 1, 'y': 1})
In [10]: ans['a']
Out[10]: 3
这将计算字符串中每个字母(包括元音)的出现情况。这应该非常有效。