Python:评估辅音或元音

时间:2013-07-30 17:49:08

标签: python

我无法弄清楚为什么当我输入'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'

4 个答案:

答案 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':
    ...