◎ 불(Bool, Boolean) 자료형
조합에 따라 수많은 값을 가질 수 있는 숫자형, 문자열과는 달리 불 자료형은 True와 False의 2가지 값만 가질 수 있다. 불 자료형의 변수에 값을 직접 입력하는 것도 가능하지만 그렇게 쓰는 경우는 대부분 흔치 않고 보통 비교 연산자의 결과 값을 저장하는 방법으로 많이 사용된다. 비교 연산자의 종류는 아래와 같다.
연산자 | 설명 |
== | 같으면 True, 다르면 False |
!= | 다르면 True, 같으면 False |
a < b | a가 b보다 작으면 True, 크면 False |
a > b | a가 b보다 크면 True, 작으면 False |
a <= b | a가 b보다 작거나 같으면 True, 크면 False |
a >= b | a가 b보다 크거나 같으면 True, 작으면 False |
불 자료형의 연산
불 자료형은 논리 연산자 not, and, or의 적용이 가능하다. 이중 not 연산자는 피연산자가 하나만 존재하므로 단항 연산자이고 and와 or 연산자는 피연산자가 두개이므로 이항 연산자이다. 참고로 우리가 사용하는 대부분의 연산자는 이항 연산자이다. 각 연산자의 기능은 아래와 같다.
연산자 | 의미 | 설명 |
not | 아니다 | True면 False로, False면 True로 전환 |
and | 그리고 | 피연산자 두 개가 모두 참이면 True, 하나라도 거짓이라면 False |
or | 또는 | 피연산자 둘 중 하나만 참이어도 True, 둘다 거짓이라면 False |
◎ if 조건문
조건문이 없는 프로그램은 없다고 봐도 될 정도로 조건문은 정말 많이 사용된다. 조건이 참이라면 if 아래의 문장들이 실행되고 거짓이라면 else 아래의 문장들이 실행된다. 조건이 거짓일 경우에 실행할 문장이 없다면 else 부분은 작성하지 않아도 무방하다. if 조건문의 기본 형태는 다음과 같다.
if (조건문):
(실행할 문장)
else:
(실행할 문장)
VS code나 인터렉티브 셸(IDLE shell)에서 if 조건문을 입력하고 엔터를 누르면 자동으로 4칸의 들여쓰기가 된다. 들여쓰기는 2칸, 4칸, 8칸으로 사용하는데 파이썬에서는 기본적으로 4칸의 들여쓰기를 사용한다. 그럼 꼭 4칸의 들여쓰기를 사용해야 하는 것일까? 그런것은 아니다. 실행할 문장이 한 개인 경우 1칸 이상의 들여쓰기만 있으면 무방하고 여러 개인 경우라면 해당 문장의 들여쓰기 칸 수가 모두 일치하기만 하면 된다.
# 기본적으로는 4칸의 들여쓰기
if True:
print("True")
# 실행할 문장이 하나라면 1칸 이상의 들여쓰기만 하면 무방
if True:
print("True")
# 실행할 문장이 여러개라면 해당 문장의 전체 들여쓰기 수가 일치하면 무방
if True:
print("T") # 들여쓰기 3칸 돼있는 상태
print("r")
print("u")
print("e")
if 조건문을 사용하여 짝수와 홀수를 구분하는 코드를 작성해보자. 짝수와 홀수를 구분하는 대표적인 방법으로는 2로 나눈 나머지가 0인지 1인지를 확인하는 것이 있다.
a = 1
if not a % 2:
print("짝수")
else:
print("홀수")
만약 한 가지 조건이 아닌 여러 개의 조건을 구분해야 하는 경우에는 if ~ elif 구문을 사용할 수 있다. elif는 else if의 줄임 표현이다. elif를 사용하지 않고 if문을 여러 개 사용하는 것도 동일한 결과를 얻을 수는 있다. 그러나 if문은 결과에 상관없이 계속 조건문이 실행되는 반면 elif 구문은 True가 나오면 그 이후의 조건문은 실행되지 않는다는 장점이 있다. if ~ elif 구문의 형태는 아래와 같다.
if 조건1:
...
elif 조건2:
...
elif 조건3:
...
elif 조건4:
...
else:
...
if ~ elif 구문을 사용하여 성적처리를 하는 프로그램을 작성해보자. 100점일 경우 A, 90~99점일 경우 B, 80~89점일 경우 C, 70~79점일 경우 D, 그 이하는 F로 처리할 것이다.
score = 86
if score == 100:
print("A")
elif 90 <= score:
print("B")
elif 80 <= score:
print("C")
elif 70 <= score:
print("D")
else:
print("F")
False로 변환되는 값
if문의 조건문에는 보통 비교 연산자를 사용한 문장이 온다. 그러나 조건문에는 다른 값도 사용될 수 있다. 조건문의 결과는 True 또는 False여야 하므로 사용된 다른 값들은 자동으로 불 자료형으로 변환된다. 이중 False로 변환되는 값은 None, 0, 0.0, 빈 컨테이너(빈 문자열, 빈 바이트열, 빈 리스트, 빈 튜플, 빈 딕셔너리 등)가 있다. 이 외의 값들은 다 True에 속하니 False로 변환되는 값만 기억하도록 하자.
pass 키워드
프로그래밍을 하다 보면 일단 프로그래밍의 전체 골격을 잡아 놓고 내부에서 처리할 내용은 차근차근 생각하며 만들겠다는 의도로 다음과 같이 코딩하는 경우가 많다. 이때 골격이란 일반적으로 조건문, 반복문, 함수, 클래스 등의 기본 구문을 말한다.
if zero == 0:
(빈 줄)
else:
(빈 줄)
다른 프로그래밍 언어와는 달리 파이썬은 if 조건문의 들여쓰기가 된 실행문은 반드시 있어야 한다. 그러므로 위 코드는 IndentationError가 발생한다. 실행문에는 아무 문장이나 있어도 실행이 되니 0을 적어도 실행은 된다. 그러나 0을 적어놓으면 코드를 보는 사람의 입장에선 헷갈릴 수 있다. 그러므로 파이썬에서는 pass 키워드를 제공한다. pass 키워드를 사용하여 위 코드를 다시 작성하면 아래와 같다.
if zero == 0:
pass
else:
pass
pass 키워드를 사용하면 아무런 문제가 없이 실행이 되지만 만약 pass 키워드를 사용한 것을 까먹을 수도 있는 것이다. 이때는 raise 키워드와 미구현 상태를 표현하는 NotImplementedError를 조합하여 raise NotImplementedError를 사용하면 해당 부분에서 오류를 강제로 발생시킬 수 있다.
if zero == 0:
raise NotImplementedError
else:
raise NotImplementedError