我进入<string>'需要字符串作为左操作数,而不是元组</string>

时间:2015-01-19 06:52:31

标签: python

s = raw_input("string: ")

if ("a", "e", "i", "o", "u") in s:
    print s.count("a", "e", "i", "o", "u")
else:
    print ("No vowels")

这是我的代码,基本上我希望有人输入一个字符串,并且这个程序可以计算元音的数量。为什么这不起作用?

6 个答案:

答案 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()所示,否则你会不小心跳过大写的元音。)