用于计算元音的Python代码

use*_*695 -2 python loops

假设s是一串小写字符.

编写一个程序,计算字符串中包含的元音数量s.有效的元音是:'a','e','i','o',和'u'.例如,如果s = 'azcbobobegghakl'您的程序应该打印:

元音数量: 5

到目前为止我有这个

count = 0
vowels = 'a' or 'e' or 'i' or 'o' or 'u'
    for vowels in s:
        count +=1
print ('Number of vowels: ' + count)
Run Code Online (Sandbox Code Playgroud)

谁能告诉我它有什么问题?

Fre*_*ihl 7

首先,试试这个:

In [9]: V = ['a','e','i','o','u']

In [10]: s = 'azcbobobegghakl'

In [11]: sum([1 for i in s if i in V])
Out[11]: 5
Run Code Online (Sandbox Code Playgroud)


jon*_*rpe 7

几个问题.首先,你的任务vowels不符合你的想法:

>>> vowels = 'a' or 'e' or 'i' or 'o' or 'u'
>>> vowels
'a'
Run Code Online (Sandbox Code Playgroud)

Python or懒洋洋地评估; 只要任何谓词评估True,就会返回它.非空序列,包括除""evaluate 之外的字符串True,因此'a'会立即返回.

其次,当你迭代时s,你无论如何都会忽略该赋值:

>>> for vowels in "foo":
    print(vowels)


f
o
o
Run Code Online (Sandbox Code Playgroud)

for x in y:依次将可迭代y中的每个项目分配给名称x,因此以前分配给x它的任何内容都不能通过该名称访问.

我想你想要的是:

count = 0
vowels = set("aeiou")
for letter in s:
    if letter in vowels:
        count += 1
Run Code Online (Sandbox Code Playgroud)

  • +1用于花时间描述当前实施的错误 (2认同)

Pad*_*ham 5

使用自己的循环.

count = 0
vowels = ['a' , 'e' , 'i' ,'o' , 'u']
for char in s:
    if char in vowels: # check if each char in your string is in your list of vowels
        count += 1
print ('Number of vowels: ' + str(count)) # count is an integer so you need to cast it as a str
Run Code Online (Sandbox Code Playgroud)

您还可以使用字符串格式:

print ('Number of vowels: {} '.format(count))
Run Code Online (Sandbox Code Playgroud)