好的,我做的是
def countvowels(st):
result=st.count("a")+st.count("A")+st.count("e")+st.count("E")+st.count("i")+st.count("I")+st.count("o")+st.count("O")+st.count("u")+st.count("U")
return result
这是有效的(我知道缩进在这篇文章中可能是错误的,但我在python中缩进的方式,它的工作原理)。
有更好的方法吗?使用for循环?
答案 0 :(得分:1)
我会做像
这样的事情def countvowels(st):
return len ([c for c in st if c.lower() in 'aeiou'])
答案 1 :(得分:1)
肯定有更好的方法。这是一个。
def countvowels(s):
s = s.lower()
return sum(s.count(v) for v in "aeiou")
答案 2 :(得分:0)
你可以使用列表理解
来做到这一点def countvowels(w):
vowels= "aAiIeEoOuU"
return len([i for i in list(w) if i in list(vowels)])
答案 3 :(得分:0)
您可以使用正则表达式模式轻松完成此操作。但在我看来,你想要没有它。所以这里有一些代码:
string = "This is a test for vowel counting"
print [(i,string.count(i)) for i in list("AaEeIiOoUu")]
答案 4 :(得分:0)
你可以通过各种方式做到这一点,先问谷歌然后问,我复制粘贴其中2个
def countvowels(string):
num_vowels=0
for char in string:
if char in "aeiouAEIOU":
num_vowels = num_vowels+1
return num_vowels
data = raw_input("Please type a sentence: ")
vowels = "aeiou"
for v in vowels:
print v, data.lower().count(v)
答案 5 :(得分:0)
您也可以尝试Counter
collections
(仅适用于Python 2.7+),如下所示。它将显示每个字母重复的次数。
from collections import Counter
st = raw_input("Enter the string")
print Counter(st)
但你想要特别的元音然后试试这个。
import re
def count_vowels(string):
vowels = re.findall('[aeiou]', string, re.IGNORECASE)
return len(vowels)
st = input("Enter a string:")
print count_vowels(st)
答案 6 :(得分:0)
以下是使用map的版本:
phrase=list("This is a test for vowel counting")
base="AaEeIiOoUu"
def c(b):
print b+":",phrase.count(b)
map(c,base)