我在这里犯了什么愚蠢的错误,这使我无法确定用户输入的第一个字母是辅音?无论我输入什么,它都可以评估第一个字母是元音。
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"
答案 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"