2013-11-26 1 views
3

사용자 입력의 첫 글자가 자음이라는 것을 알지 못하게하는 어리석은 실수는 무엇입니까? 내가 무엇을 입력 했든간에 그것은 첫 글자가 모음이라는 것을 평가합니다.모음 감지 대 파이썬의 자음

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" 
+0

또 다른 접근 방식 startswith() 메소드를 사용하는 사용하는 것입니다. 단어를 변수'first'에 대입하면 비교를 할 수 있습니다 : first == first.startswith (('a', 'e', ​​'i', 'o', 'u')); '참'이라면이 단어는 자음으로 시작하지 않는다는 것을 알 수 있습니다. – seeker

답변

14

변경 :

if first == "a" or "e" or "i" or "o" or "u": 

에 :이

(first == "a") or ("e") or ("i") or ("o") or ("u")로 평가 때문에 비어 있지 않은 문자열 때문에 항상 true 인

if first in ('a', 'e', 'i', 'o', 'u'): #or `if first in 'aeiou'` 

first == "a" or "e" or "i" or "o" or "u" 항상 True입니다 이것은 True로 평가됩니다.

>>> bool('e') 
True 
+8

또는이 문자는 모두 하나의 문자이기 때문에'처음에는 'aeiou':'. –

1

문제는 first == "a" or "e"(first == "a") or "e"로 평가되고있다, 그래서 당신은 항상 인쇄 할 "vowel"을 일으키는 True 문이다 'e'을받을거야 것입니다. "e"은 항상, 그래서 if 문은 항상 true로 평가되는, 해당하는 경우 first == "a" 다음 사실이고 경우에 당신이 확인하고 있습니다 귀하의 if 성명에서 뭐하는

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

: 대안은하는 것입니다.
은 당신이 대신해야 할 것은 :

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

또는 더 나은 아직 :

if first in "aeiou": 
관련 문제