ユーザー入力の最初の文字が子音であると私が判断するのを妨げている、ここで私がしている愚かな間違いは何ですか?何を入力しても、最初の文字が母音であると評価されます。
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"
変化する:
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
if
ステートメントで行っていることは、first == "a"
はtrue、次に"e"
はtrueであり、常にtrueであるため、ifステートメントは常にtrueと評価されます。
代わりにあなたがすべきことは:
if first == "a" or first == "e" ...
またはより良い:
if first in "aeiou":
あなたの問題は、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"