2016-06-03 2 views
-4
input1 = raw_input("").lower() 
if input1 == "no": 
    print "no" 
if input1 == "yes": 
    print "yes" 
else: 
    print "nothing" 

이것은 단순한 버전의 문제입니다. 마지막 if 문이 실행될 때마다 항상 else이 함께 인쇄됩니다.Python If/Else 문이 예상대로 작동하지 않습니다.

예 : '아니오'라고 입력하면 '아니오'와 '아무것도'는 인쇄되지 않지만 '예'라고 입력하면 '예'만 인쇄됩니다.

+3

'elif'를 사용하십시오. 당신의 조건을 읽으십시오. – miradulo

답변

3

두 개의 개별 if 문이 있습니다. 따라서 코드는 input1이 "no"와 같은지 확인한 다음 매번 "예"와 같은지 확인합니다. 당신이 그것을 변경하는 경우 :

input1 = raw_input("").lower() 
    if input1 == "no": 
    print "no" 
    elif input1 == "yes": 
    print "yes" 
    else: 
    print "nothing" 

를 다음 그것은 먼저이 false 인 경우 '아니오', 그것은 확인합니다 확인합니다 하나 개의 문장이 될 것이다 '예', 그리고 마지막으로, 그 거짓이면, 아무것도 인쇄하지 않습니다.

0

두 조건이 있습니다. 두 번째 숫자는 elif이어야합니다. 변경하여

if input1 == "yes": 

elif input1 == "yes": 
1

당신은 if/else에서 분리 한 if있다; 첫 번째 테스트는 통과 할 수 있고 두 번째 테스트는 여전히 수행됩니다 (실패 할 경우 else 조건이 실행 됨). 에 테스트를 변경합니다

if input1 == "no": 
    print "no" 
elif input1 == "yes": # <-- Changed if to elif so if input1 == "no" we don't get here 
    print "yes" 
else: 
    print "nothing" 

원래 코드의 영어 설명을 입력 1이 동일한 경우 '아니오', 다음 인쇄 '는'아니오 '입력 1은 동일한 경우'예 '인쇄'예 ',하지만 아니라면. '예'라고 대답하고, '아무것도 인쇄하지 마라.' 두 문장의 연결이 끊어졌습니다. nothing을 인쇄했는지 여부는 no의 테스트와 독립적입니다.

사이드 노트 :

문제를 완전히 피할 수
if input1 in ("no", "yes"): 
    print input1 
else: 
    print "nothing" 

(물론, 실제 코드가 가능성이 더 복잡하다, 그래서 당신이 트릭을 사용하지 수) :이 코드를 조금 단순화 할 수 있습니다.

관련 문제