假设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)
谁能告诉我它有什么问题?
首先,试试这个:
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)
几个问题.首先,你的任务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)
使用自己的循环.
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)
| 归档时间: |
|
| 查看次数: |
42378 次 |
| 最近记录: |