2013-07-30 35 views
-1

我不明白爲什麼當我輸入單詞'魚'原來的印刷元音。Python:評估一個輔音或元音

#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' 

回答

3
if first == 'a' or 'e' 

將其更改爲

if first == 'a' or first == 'e': 

或者

if first in ('a', 'e'): 

你的if語句被評估到True因爲你正在做一個布爾值或用真值('e')。

Python中的非空字符串評估爲True

>>> bool('') 
False 
>>> bool('a') 
True 

因此,你的代碼被評爲

if (first == 'a') or True: 

它總是評價True,因此執行if聲明。

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。

1

這是因爲if first == 'a' or 'e':被當作if (first == 'a') or ('e'):

由於 'E' 是truthy,該or正在恢復true

1

爲了避免這種情況,使你的代碼更清晰,寫

if first in ('a', 'e'): 
    ... 

if first in 'ae': 
    ... 
相關問題