我无法弄清楚为什么当我输入'fish'这个词来原创它的印刷元音时。
#Begin program
original = raw_input('Enter a word:')
if len(original) > 0 and original.isalpha():
word = original.lower() #make sure original is lowercase
first = word[0]
if first == 'a' or 'e':
print "vowel"
else:
print "consonant"
else:
print 'empty'
答案 0 :(得分:3)
if first == 'a' or 'e'
将其更改为
if first == 'a' or first == 'e':
或
if first in ('a', 'e'):
您的if语句正在评估True
,因为您正在使用True值('e'
)进行布尔OR。
Python中的非空字符串计算为True
。
>>> bool('')
False
>>> bool('a')
True
因此,您的代码将被评估为
if (first == 'a') or True:
始终评估为True
,因此执行if
语句。
答案 1 :(得分:2)
你的条件错了。具体地,
if first == 'a' or 'e':
不起作用。它必须是
if first == 'a' or first == 'e':
原始陈述评估如下:
if (first == 'a') or ('e'):
if (False) or (True):
这是Python中的explanation of truth值。请注意,字符评估为true。
答案 2 :(得分:1)
这是因为if first == 'a' or 'e':
被视为if (first == 'a') or ('e'):
由于'e'是真实的,or
正在返回true
答案 3 :(得分:1)
为了避免这种情况并使代码更清晰,请写
if first in ('a', 'e'):
...
或
if first in 'ae':
...