-1

元の印刷母音に「魚」という単語を入力すると、その理由がわかりません。

#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

4 に答える 4

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

に変更します

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

または

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

TrueTrue 値 ( ) でブール値の OR を実行しているため、if ステートメントは に評価されます'e'

Python の空でない文字列は に評価されTrueます。

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

したがって、コードは次のように評価されます

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

これは常に評価されるTrueため、ifステートメントが実行されます。

于 2013-07-30T17:50:33.790 に答える
2

あなたのif条件が間違っています。具体的には、

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

動作しません。それはする必要があります

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

元のステートメントは次のように評価されます。

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

if (False) or (True):

Pythonでの真理値の説明は次のとおりです。文字は true として評価されることに注意してください。

于 2013-07-30T17:50:48.043 に答える
1

if first == 'a' or 'e':のように扱われているからです。if (first == 'a') or ('e'):

'e' は true であるため、orが返されます。true

于 2013-07-30T17:51:13.147 に答える
1

このような状況を回避し、コードをより明確にするために、次のように記述します。

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

また

if first in 'ae':
    ...
于 2013-07-30T17:55:14.593 に答える