9) 참과 거짓

자료형에 참과 거짓이 있다?

 

조금 이상한 말처럼 들리지만 참과 거짓은 분명히 있다.

  이것은 매우 중요하며 자주 쓰이게 된다. 자료형의 참과 거짓을 구분짓는 기준을 다음과 같이 정리했다.

 

참 or 거짓
"python"
"" 거짓
[1, 2, 3]
[] 거짓
() 거짓
{} 거짓
1
0 거짓
None 거짓

 

 

문자열, 리스트, 터플, 딕셔너리 등의 값이 비어 있으면("", [], (), {}) 거짓이 된다.

  당연히 비어 있지 않으면 참이 된다. 숫자에서는 그 값이 0일 때 거짓이 된다.

위의 표를 보면 None이란 것이 있는데 이것에 대해서는 아직은 신경쓰지 말도록 하자.

  그저 None이란 것은 거짓을 뜻한다고만 알아두자.

다음의 예를 보고 참과 거짓이 프로그램에서 어떻게 쓰이는지에 대해서 간단히 알아보자.

 

>>> a = [1,2,3,4]
>>> while a:
...     a.pop()
...
4
3
2
1

 

  먼저 a = [1,2,3,4]라는 리스트를 하나 만들었다.

while문은 뒤에서 자세히 다루겠지만 간단히 알아보면 다음과 같다.

 

while <조건문>:  
    <수행할 문장>

 

  <조건문>이 참인 동안에 <수행할 문장>을 계속 수행한다.

즉, 위의 예에서 보면 a가 참인 경우에 a.pop()을 계속 실행하라는 의미이다.

  a.pop()이란 함수는 리스트 a의 마지막 요소를 끄집어내는 함수이므로 a가 참인 동안(리스트 내에 요소가 존재하는 한)에 마지막 요소를 계속해서 끄집어 낼 것이다.

결국 더 이상 끄집어 낼 것이 없으면 a가 빈 리스트([])가 되어 거짓이 될 것이다.

  따라서 while문은 거짓에 의해서 중지된다. 위에서 본 예는 파이썬 프로그래밍에서 매우 자주 쓰이는 기법중 하나이다.

위의 예가 너무 복잡하다고 생각하는 독자는 다음의 예를 보면 쉽게 이해가 될 것이다.

 

>>> if []:
...     print("True")
... else:
...     print("False")
...
False

 

  if문에 대해서 잘 모르는 독자라도 위의 문장을 다음과 같이 해석하는 데 무리가 없을 것이다. (if문에 대해서는 바로 조금후에 자세히 다루게 된다.)

 

만약 []가 참이면 "True"라는 문자열을 출력하고 그렇지 않으면 "False"라는 문자열을 출력해라.

 

  []는 위의 테이블에서 보듯이 거짓이기 때문에 “False"란 문자열이 출력된다.

 

>>> if [1,2,3]:
...     print("True")
... else:
...     print("False")
...
True

 

  위 코드를 해석해 보면 다음과 같다.

 

만약 [1,2,3]이 참이면 "True"라는 문자열을 출력하고 그렇지 않으면 "False"라는 문자열을 출력해라.

 

  [1,2,3]은 요소 값이 있는 리스트이기 때문에 참이다. 따라서 "True"를 출력한다.