在Python中检测元音与辅音

时间:2013-11-26 19:22:50

标签: python string conditional conditional-statements

我在这里犯了什么愚蠢的错误,这使我无法确定用户输入的第一个字母是辅音?无论我输入什么,它都可以评估第一个字母是元音。

original = raw_input('Enter a word:')
word = original.lower()
first = word[0]

if len(original) > 0 and original.isalpha():
    if first == "a" or "e" or "i" or "o" or "u":
        print "vowel"
    else:
        print "consonant"
else:
    print "empty"

3 个答案:

答案 0 :(得分:19)

更改:

if first == "a" or "e" or "i" or "o" or "u":

为:

if first in ('a', 'e', 'i', 'o', 'u'):  #or `if first in 'aeiou'`

first == "a" or "e" or "i" or "o" or "u"始终为True,因为它被评估为

(first == "a") or ("e") or ("i") or ("o") or ("u"),因为非空字符串始终为True,因此将其评估为True。

>>> bool('e')
True

答案 1 :(得分:9)

你在if语句中正在做的是检查first == "a"是否为真,然后如果"e"为真,那么它总是如此,所以if语句总是求值为true。
你应该做的是:

if first == "a" or first == "e" ...

或更好:

if first in "aeiou":

答案 2 :(得分:3)

您的问题是first == "a" or "e"被评估为(first == "a") or "e",因此您总是会获得'e',这是一个True语句,导致{{1}打印。另一种方法是:

"vowel"