在Python中计算字符串中元音的数量

时间:2014-10-28 04:38:58

标签: python

好的,我做的是

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循环?

7 个答案:

答案 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)