web-dev-qa-db-ja.com

Pythonでの母音と子音の検出

ユーザー入力の最初の文字が子音であると私が判断するのを妨げている、ここで私がしている愚かな間違いは何ですか?何を入力しても、最初の文字が母音であると評価されます。

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"
5
THE DOCTOR

変化する:

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
21

ifステートメントで行っていることは、first == "a"はtrue、次に"e"はtrueであり、常にtrueであるため、ifステートメントは常にtrueと評価されます。
代わりにあなたがすべきことは:

if first == "a" or first == "e" ...

またはより良い:

if first in "aeiou":
9
agelber

あなたの問題は、first == "a" or "e"(first == "a") or "e"として評価されているため、常に'e'を取得することになります。これは、Trueステートメントであり、"vowel"を引き起こします。印刷されます。別の方法は次のとおりです。

original = raw_input('Enter a Word:')
Word = original.lower()
first = Word[0]

if len(original) > 0 and original.isalpha():
    if first in 'aeiou':
        print "vowel"
    else:
        print "consonant"
else:
    print "empty"
4
aust