简体   繁体   English

在字符串 Python 中计算元音

[英]Count Vowels in String Python

I'm trying to count how many occurrences there are of specific characters in a string, but the output is wrong.我正在尝试计算字符串中特定字符出现的次数,但输出错误。

Here is my code:这是我的代码:

inputString = str(input("Please type a sentence: "))
a = "a"
A = "A"
e = "e"
E = "E"
i = "i"
I = "I"
o = "o"
O = "O"
u = "u"
U = "U"
acount = 0
ecount = 0
icount = 0
ocount = 0
ucount = 0

if A or a in stri :
     acount = acount + 1

if E or e in stri :
     ecount = ecount + 1

if I or i in stri :
    icount = icount + 1

if o or O in stri :
     ocount = ocount + 1

if u or U in stri :
     ucount = ucount + 1

print(acount, ecount, icount, ocount, ucount)

If I enter the letter A the output would be: 1 1 1 1 1如果我输入字母A ,输出将是: 1 1 1 1 1

What you want can be done quite simply like so:您可以像这样简单地完成您想要的操作:

>>> mystr = input("Please type a sentence: ")
Please type a sentence: abcdE
>>> print(*map(mystr.lower().count, "aeiou"))
1 1 0 0 0
>>>

In case you don't know them, here is a reference on map and one on the * .如果您不认识他们,这里有map上的参考资料和*上的参考资料。

def countvowels(string):
    num_vowels=0
    for char in string:
        if char in "aeiouAEIOU":
           num_vowels = num_vowels+1
    return num_vowels

(remember the spacing s) (记住间距 s)

>>> sentence = input("Sentence: ")
Sentence: this is a sentence
>>> counts = {i:0 for i in 'aeiouAEIOU'}
>>> for char in sentence:
...   if char in counts:
...     counts[char] += 1
... 
>>> for k,v in counts.items():
...   print(k, v)
... 
a 1
e 3
u 0
U 0
O 0
i 2
E 0
o 0
A 0
I 0
data = str(input("Please type a sentence: "))
vowels = "aeiou"
for v in vowels:
    print(v, data.lower().count(v))

Use a Counter使用Counter

>>> from collections import Counter
>>> c = Counter('gallahad')
>>> print c
Counter({'a': 3, 'l': 2, 'h': 1, 'g': 1, 'd': 1})
>>> c['a']    # count of "a" characters
3

Counter is only available in Python 2.7+. Counter仅在 Python 2.7+ 中可用。 A solution that should work on Python 2.5 would utilize defaultdict应该在 Python 2.5 上工作的解决方案将使用defaultdict

>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for c in s:
...     d[c] = d[c] + 1
... 
>>> print dict(d)
{'a': 3, 'h': 1, 'l': 2, 'g': 1, 'd': 1}

For anyone who looking the most simple solution, here's the one对于任何寻找最简单解决方案的人来说,这是一个

vowel = ['a', 'e', 'i', 'o', 'u']
Sentence = input("Enter a phrase: ")
count = 0
for letter in Sentence:
    if letter in vowel:
        count += 1
print(count)

if A or a in stri means if A or (a in stri) which is if True or (a in stri) which is always True , and same for each of your if statements. if A or a in stri表示if A or (a in stri) which is if True or (a in stri) which is always True ,并且对于每个if语句都是相同的。

What you wanted to say is if A in stri or a in stri .你想说的是if A in stri or a in stri

This is your mistake.这是你的错误。 Not the only one - you are not really counting vowels, since you only check if string contains them once.不是唯一的 - 您并没有真正计算元音,因为您只检查字符串是否包含它们一次。

The other issue is that your code is far from being the best way of doing it, please see, for example, this: Count vowels from raw input .另一个问题是,您的代码远不是最好的方法,例如,请参阅: 从原始输入计算元音 You'll find a few nice solutions there, which can easily be adopted for your particular case.您会在那里找到一些不错的解决方案,这些解决方案可以很容易地用于您的特定情况。 I think if you go in detail through the first answer, you'll be able to rewrite your code in a correct way.我认为如果您详细了解第一个答案,您将能够以正确的方式重写您的代码。

>>> string = "aswdrtio"
>>> [string.lower().count(x) for x in "aeiou"]
[1, 0, 1, 1, 0]
count = 0 

string = raw_input("Type a sentence and I will count the vowels!").lower()

for char in string:

    if char in 'aeiou':

        count += 1

print count

For brevity and readability, use a dictionary comprehension. 为了简洁起见,请使用字典理解。

>>> inp = raw_input() # use input in Python3
hI therE stAckOverflow!
>>> search = inp.lower()
>>> {v:search.count(v) for v in 'aeiou'}
{'a': 1, 'i': 1, 'e': 3, 'u': 0, 'o': 2}

Alternatively, you can consider a named tuple. 另外,您可以考虑一个命名元组。

>>> from collections import namedtuple
>>> vocals = 'aeiou'
>>> s = 'hI therE stAckOverflow!'.lower()
>>> namedtuple('Vowels', ' '.join(vocals))(*(s.count(v) for v in vocals))
Vowels(a=1, e=3, i=1, o=2, u=0)

I wrote a code used to count vowels.我写了一个用于计算元音的代码。 You may use this to count any character of your choosing.您可以使用它来计算您选择的任何字符。 I hope this helps!我希望这有帮助! (coded in Python 3.6.0) (用 Python 3.6.0 编码)

while(True):
phrase = input('Enter phrase you wish to count vowels: ')
if phrase == 'end': #This will to be used to end the loop 
    quit() #You may use break command if you don't wish to quit
lower = str.lower(phrase) #Will make string lower case
convert = list(lower) #Convert sting into a list
a = convert.count('a') #This will count letter for the letter a
e = convert.count('e')
i = convert.count('i')
o = convert.count('o')
u = convert.count('u')

vowel = a + e + i + o + u #Used to find total sum of vowels

print ('Total vowels = ', vowel)
print ('a = ', a)
print ('e = ', e)
print ('i = ', i)
print ('o = ', o)
print ('u = ', u)

Suppose,认为,

S = "Combination" S = "组合"

import re
print re.findall('a|e|i|o|u', S)

Prints: ['o', 'i', 'a', 'i', 'o']打印: ['o', 'i', 'a', 'i', 'o']

For your case in a sentence (Case1):对于你的句子中的案例(案例1):

txt = "blah blah blah...." txt = "等等等等等等...."

import re
txt = re.sub('[\r\t\n\d\,\.\!\?\\\/\(\)\[\]\{\}]+', " ", txt)
txt = re.sub('\s{2,}', " ", txt)
txt = txt.strip()
words = txt.split(' ')

for w in words:
    print w, len(re.findall('a|e|i|o|u', w))

Case2案例2

import re,  from nltk.tokenize import word_tokenize

for w in work_tokenize(txt):
        print w, len(re.findall('a|e|i|o|u', w))

Another solution with list comprehension:另一个具有列表理解的解决方案:

vowels = ["a", "e", "i", "o", "u"]

def vowel_counter(str):
  return len([char for char in str if char in vowels])

print(vowel_counter("abracadabra"))
# 5
sentence = input("Enter a sentence: ").upper()
#create two lists
vowels = ['A','E',"I", "O", "U"]
num = [0,0,0,0,0]

#loop through every char
for i in range(len(sentence)):
#for every char, loop through vowels
  for v in range(len(vowels)):
    #if char matches vowels, increase num
      if sentence[i] == vowels[v]:
        num[v] += 1

for i in range(len(vowels)):
  print(vowels[i],":", num[i])
count = 0
s = "azcbobobEgghakl"
s = s.lower()
for i in range(0, len(s)):
    if s[i] == 'a'or s[i] == 'e'or s[i] == 'i'or s[i] == 'o'or s[i] == 'u':
        count += 1
print("Number of vowels: "+str(count))

This works for me and also counts the consonants as well (think of it as a bonus) however, if you really don't want the consonant count all you have to do is delete the last for loop and the last variable at the top.这对我有用并且也计算辅音(将其视为奖励)但是,如果您真的不想要辅音计数,您所要做的就是删除最后一个 for 循环和顶部的最后一个变量。

Her is the python code:她是python代码:

data = input('Please give me a string: ')
data = data.lower()
vowels = ['a','e','i','o','u']
consonants = ['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z']
vowelCount = 0
consonantCount = 0


for string in data:
    for i in vowels:
        if string == i:
            vowelCount += 1
    for i in consonants:
        if string == i:
            consonantCount += 1

print('Your string contains %s vowels and %s consonants.' %(vowelCount, consonantCount))
Simplest Answer:

inputString = str(input("Please type a sentence: "))

vowel_count = 0

inputString =inputString.lower()

vowel_count+=inputString.count("a")
vowel_count+=inputString.count("e")
vowel_count+=inputString.count("i")
vowel_count+=inputString.count("o")
vowel_count+=inputString.count("u")

print(vowel_count)
from collections import defaultdict


def count_vowels(word):
    vowels = 'aeiouAEIOU'
    count = defaultdict(int)   # init counter
    for char in word:
        if char in vowels:
            count[char] += 1
    return count

A pythonic way to count vowels in a word, not like in java or c++ , actually no need to preprocess the word string, no need for str.strip() or str.lower() .一种计算单词中元音的pythonic方法,不像在javac++ ,实际上不需要预处理单词字符串,不需要str.strip()str.lower() But if you'd like to count vowels case-insensitively, then before go into the for-loop, use str.lower() .但是,如果您想不区分大小写地计算元音,那么在进入 for 循环之前,请使用str.lower()

vowels = ["a","e","i","o","u"]

def checkForVowels(some_string):
  #will save all counted vowel variables as key/value
  amountOfVowels = {}
  for i in vowels:
    # check for lower vowel variables
    if i in some_string:
      amountOfVowels[i] = some_string.count(i)
    #check for upper vowel variables
    elif i.upper() in some_string:
      amountOfVowels[i.upper()] = some_string.count(i.upper())
  return amountOfVowels

print(checkForVowels("sOmE string"))

You can test this code here : https://repl.it/repls/BlueSlateblueDecagons您可以在此处测试此代码: https : //repl.it/repls/BlueSlateblueDecagons

So have fun hope helped a lil bit.所以玩得开心,希望能帮上一点忙。

... ...

vowels = "aioue"
text = input("Please enter your text: ")
count = 0

for i in text:
    if i in vowels:
        count += 1

print("There are", count, "vowels in your text")

... ...

def vowels():
    numOfVowels=0
    user=input("enter the sentence: ")
    for vowel in user:
        if vowel in "aeiouAEIOU":
            numOfVowels=numOfVowels+1
    return numOfVowels
print("The number of vowels are: "+str(vowels()))

You could use regex and dict comprehension:您可以使用正则表达式和字典理解:

import re
s = "aeiouuaaieeeeeeee"

The regex function findall() returns a list containing all matches正则表达式函数 findall() 返回一个包含所有匹配项的列表

Here x is the key and the lenght of the list returned by the regex is the count of each vowel in this string, note that regex will find any character you introduce into the "aeiou" string.这里 x 是键,正则表达式返回的列表的长度是该字符串中每个元音的计数,请注意,正则表达式会找到您引入“aeiou”字符串的任何字符。

foo = {x: len(re.findall(f"{x}", s)) for x in "aeiou"}
print(foo)

returns:返回:

{'a': 3, 'e': 9, 'i': 2, 'o': 1, 'u': 2}
from collections import Counter

count = Counter()
inputString = str(input("Please type a sentence: "))

for i in inputString:
    if i in "aeiouAEIOU":
          count.update(i)          
print(count)

这是一个简单的,不要觉得在python中搜索三元for循环很复杂,你会得到它。

print(sum([1 for ele in input() if ele in "aeiouAEIOU"]))

def vowel_count(string):
    
    string = string.lower()
    count = 0
    vowel_found = False 
    
    for char in string:
        if char in 'aeiou': #checking if char is a vowel
            count += 1
            vowel_found = True
            
    if vowel_found == False:
        print(f"There are no vowels in the string: {string}")
            
    return count

string = "helloworld"

result = vowel_count(string) #calling function

print("No of vowels are: ", result)
def count_vowel():
    cnt = 0
    s = 'abcdiasdeokiomnguu'
    s_len = len(s)
    s_len = s_len - 1
    while s_len >= 0:
        if s[s_len] in ('aeiou'):
            cnt += 1
        s_len -= 1
    print 'numofVowels: ' + str(cnt)
    return cnt

def main():
    print(count_vowel())

main()
count = 0
name=raw_input("Enter your name:")
for letter in name:
    if(letter in ['A','E','I','O','U','a','e','i','o','u']):
       count=count + 1
print "You have", count, "vowels in your name."
  1 #!/usr/bin/python
  2 
  3 a = raw_input('Enter the statement: ')
  4 
  5 ########### To count number of words in the statement ##########
  6 
  7 words = len(a.split(' '))
  8 print 'Number of words in the statement are: %r' %words 
  9 
 10 ########### To count vowels in the statement ##########
 11 
 12 print '\n' "Below is the vowel's count in the statement" '\n'
 13 vowels = 'aeiou'
 14 
 15 for key in vowels:
 16     print  key, '=', a.lower().count(key)
 17 
string1='I love my India'

vowel='aeiou'

for i in vowel:
  print i + "->" + str(string1.count(i))
def check_vowel(char):
    chars = char.lower()
    list = []
    list2 = []
    for i in range(0, len(chars)):
        if(chars[i]!=' '):
            if(chars[i]=='a' or chars[i]=='e' or chars[i]=='i' or chars[i]=='o' or chars[i]=='u'):
                list.append(chars[i])
            else:
                list2.append(chars[i])
    return list, list2
    

char = input("Enter your string:")
list,list2 = check_vowel(char)
if len(list)==1:
    print("Vowel is:", len(list), list)
if len(list)>1:
    print("Vowels are:", len(list), list)
if len(list2)==1:
    print("Constant is:", len(list2), list2)
if len(list2)>1:
    print("Constants are:", len(list2), list2)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM