2014-12-04 3 views
0

내 프로그램에서 불린 변수 두 개를 after와 late라고 부른다.왜 표현식이 거짓이고 참이 true로 평가됩니까? (파이썬 2.7)

print(after) 
print(late) 

프로그램 인쇄 예상대로

false 
true 

: 그냥 각 변수가 올바른 값을 가지고 있는지 확인하기 위해, 나는 다음과 같은 명령을 사용하여 각 하나를 테스트했다. 그러나, 나는 다음과 같은 코드를 실행하면

if after and late: 
    print('true and true') 
elif after and (not late): 
    print('true and false') 
elif (not after) and late: 
    print('false and true') 
elif (not after) and (not late): 
    print('false and false') 

프로그램 인쇄

'true and true' 

을 의미하는 표현 후 늦은 true로 평가하고있다. 참과 거짓이 거짓을 가져야 만하는 이유는 무엇입니까?

+1

아마도'after'와'late' 문자열입니까? – nneonneo

+0

더 많은 조각이 도움이 될 것입니다 – Codeek

+1

그들은 확실히 부울이 아닙니다. 사건을 확인하십시오. 파이썬의 부울은 대문자입니다. – dyoo

답변

4
>>> print(True and False) 
False 

Boolean 값의 처음에는 대문자가 있습니다. 나는 당신이 문자열을 사용하는 것 같아요. 당신은 type(after)으로 그것을 확인할 수 있습니다.

프로그램을 "디버깅"하기 위해 모든 사례를 수동으로 나눌 필요는 없습니다. 그건 파이썬이 의도 한 방식이 아니에요. 그냥 print 평가 코드 print(after+' and '+late), type을 사용하거나 위의 대화 형 Python 콘솔을 사용하십시오.

+0

감사합니다. 방금 테스트 해 봤더니 끈이 였어. – SarcasticSully