s = raw_input("string: ")
if ("a", "e", "i", "o", "u") in s:
print s.count("a", "e", "i", "o", "u")
else:
print ("No vowels")
这是我的代码,基本上我希望有人输入一个字符串,并且这个程序可以计算元音的数量。为什么这不起作用?
答案 0 :(得分:2)
我打赌它试图看看元组中是否有('a','e'...),而不是单独的项目。迭代:
count = 0
for letter in 'aeiou':
if letter in s:
count += s.count(letter)
print count
答案 1 :(得分:1)
您的代码检查元组("a", "e", "i", "o", "u")
是否在字符串s
内,当然不存在。
如果你需要跟踪多少次重复的元音,你应该这样做:
In[22]: s = 'aiuo hohoho'
In[23]: vowel_count = {i:s.count(i) for i in 'aiueo'}
In[24]: vowel_count
Out[24]: {'a': 1, 'e': 0, 'i': 1, 'o': 4, 'u': 1}
它给你一个vowel:counts
的词典,所以你可以得到这样的元音的数量:
In[25]: vowel_count['o']
Out[25]: 4
答案 2 :(得分:1)
检查它是否是一个子集:
if set("aeiou") <= set(s):
...
答案 3 :(得分:0)
或者您可以使用dict来记住元音的数量:
s = raw_input("string: ")
aeiou_dict = {'a':0,'e':0,'i':0,'o':0,'u':0}
for char in s:
if char in 'aeiou':
aeiou_dict[char] += 1
else:
pass
print aeiou_dict
答案 4 :(得分:0)
你可以这样做。最终列表中的每个元素都是您想要的元音数。
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Take this for an example
a = 'aeiouaeioujjj'
print [a.count(item) for item in 'aeiou']
输出:
[2, 2, 2, 2, 2]
答案 5 :(得分:0)
以下是使用Python内置sum
的代码段,它依赖于Python的True和1的等价:
>>> s = "sldkjfwoqpwefjsfueiof"
>>> num_vowels = sum(c in "aeiou" for c in s.lower())
>>> print num_vowels
6
对于s中的每个角色,评估它是否在&#34; aeiou&#34;或不。如果是,则计算结果为True,相当于值1.字符不在&#34; aeiou&#34;求值为False,相当于0. sum
将这些全部加起来,结果将告诉您输入字符串中有多少字符满足元音条件。 (不要忘记将输入字符串转换为小写字母,如调用.lower()
所示,否则你会不小心跳过大写的元音。)