About Python – “제어문 – if문”
About Python – “제어문 – if문”
제어문이란?
제어 흐름이란, 프로그램에서 실행되는 각 구문, 명령어나 함수가 호출되는 순서를 의미합니다. 그리고 제어문이란 주어진 조건의 결괏값에 따라서 프로그램의 수행 순서를 제어하거나 문장들의 수행 횟수를 조정하는 문장을 가리킵니다.
파이썬의 if
문
if
문은 프로그램에서 조건의 결괏값에 따라 그것에 맞는 상황을 수행하는 데에 사용합니다.
if 조건문:
조건문이 참일 때 실행하고자 하는 문장1
조건문이 참일 때 실행하고자 하는 문장2
else:
조건문이 거짓일 때 실행하고자 하는 문장1
조건문이 거짓일 때 실행하고자 하는 문장2
# ":"와 들여쓰기를 사용하는 것을 잊지 않도록 주의해야 합니다.
파이썬의 조건문
조건문이란, 프로그래머가 명시한 불리언 자료형 조건이 참인지 거짓인지에 따라 달라지는 계산이나 상황을 수행하는 프로그래밍 언어의 특징입니다. 쉽게 이야기하면 “참”과 “거짓”을 판단하는 문장을 의미합니다.
조건문 1 – “비교 연산자”
예컨대 누구나 3>5
는 거짓임을 알 수 있을 것입니다. 3>5
와 같은 문장은 비교 연산자를 이용한 조건문인데, 파이썬에서 비교 연산자는 다음과 같이 사용합니다.
x = 13
y = 20
print(bool(x>y)) # 상식적인 부등호의 사용방법과 같습니다.
print(bool(x<y)) # 상식적인 부등호의 사용방법과 같습니다.
print(bool(x==y)) # x와 y가 같은지를 비교합니다.
print(bool(x!=y)) # x와 y가 같지 않은지를 비교합니다.
print(bool(x>=y)) # x가 y보다 크거나 같은지를 비교합니다.
print(bool(x<=y)) # x가 y보다 작거나 같은지를 비교합니다.
# False
# True
# False
# True
# False
# True
조건문 2 – “논리 연산자”
파이썬에서는 여타 다른 언어들처럼 and, or, not
의 논리 연산자를 가지고 있습니다. 아래의 코드를 보면 직관적으로 이해가 될 것입니다.
x = True
y = False
print(bool(x or y)) # 둘 중 하나만 참이어도 참입니다.
print(bool(x and y)) # 둘 다 참이어야 참입니다.
print(bool(not x)) # 거짓이면 참을, 참이면 거짓을 반환합니다.
print(bool(not y)) # 거짓이면 참을, 참이면 거짓을 반환합니다.
# True
# False
# False
# True
조건문 3 – “is
연산자”
a = 14
위의 코드는 변수 a에 13을 대입하는 것임을 알 수 있을 것입니다. 위의 코드가 시작되며 메모리에 14
라는 int형 객체가 할당되고, 그것의 메모리 주소를 a
가 가리키게 됩니다. 메모리 어딘가에 적재되어 있는 14
라는 객체를 a
가 가리키게 되는 것입니다. id(변수명)
을 하면 메모리 어디에 객체가 저장되어 있는지, 메모리 주소를 확인할 수 있습니다.
a = 14
print(id(14))
# 4522525328
14
라는 값이 적재된 메모리의 주소는 4522525328이라는 것입니다. 무튼, is
연산자를 사용하면 두 객체가 가리키는 메모리 주소가 같은지를 비교합니다.
a = [1229,]
b = a
c = [1229,]
print(id(a)) #4454052480
print(id(b)) #4454052480
print(id(c)) #4456217600
print(bool(a==b)) #True
print(bool(a==c)) #True
print(bool(a is b)) #True
print(bool(a is c)) #False
위의 코드를 살펴봅시다.
a
라는 변수는[1229,]
라는 리스트 객체를 가리키고 있습니다.b
라는 변수 또한[1229,]
라는 객체를 가리킵니다.c
또한[1229,]
라는 리스트 객체를 가리키는데, 메모리 주소는a
와b
의 그것과 다릅니다.c
가 가리키는[1229,]
는 메모리에 새로 적재된 것입니다.==
연산자를 사용하여a
와b
,a
와c
를 비교하면True
가 나올 것입니다.==
연산자는 값을 비교합니다.is
연산자를 사용하여a
와b
를 비교하면True
가 나옵니다.is
연산자는 메모리 주소를 비교하기 때문입니다. 그렇기 때문에,a
와c
를 비교하면False
가 나오는 것을 확인할 수 있습니다.
조건문 3 – “포함 연산자”
파이썬에서는 어떤 것이 무언가에 포함되어 있는지 없는지를 판단해 주는 조건문을 제공합니다. in과 not in이 바로 그것인데, 아래의 예제를 살펴보면 이해할 수 있을 것입니다.
a = [1,2,3,4,5]
print(bool(6 in a)) # 6이 b 안에 포함되어 있는지를 판단
print(bool(6 not in a)) # 6이 b 안에 포함되어 있지 않는지를 판단
b = "Hello World!"
print(bool("Hello" in a)) # "Hello"가 a 안에 포함되어 있는지를 판단
c = set([1,2,3,5])
print(bool(4 in c)) # 4가 c 안에 포함되어 있는지를 판단
d = {"Hello" : '안녕하세요', "Apple" : '사과', "Lion" : '사자'}
print(bool({""'안녕하세요'})) # "안녕하세요" 가 d에 포함되어 있는지를 판단
파이썬의 elif
문
이전 조건문이 거짓일 때에 elif
아래에 있는 문장이 수행됩니다.
a = 1
b = 2
c = 3
if a==b: # 거짓
print("a는 b와 같습니다.")
elif a is b: # 거짓
print("a의 메모리 주소와 b의 메모리 주소는 같습니다.")
elif a+1 == b: # 참
print("a에 1을 더한 값과 b의 값은 같습니다.")
else: # 위의 조건들이 모두 거짓인 경우 실행됩니다.
print("위의 조건문 모두 거짓입니다.")
“참이면 ~ 아니면”의 조건을 프로그램에 적용하기 위해서는 if-else
를 사용하지만, “참이면~아니면~그것도 아니면~그것도 아니면~아니면~” 등 여러 가지 조건을 프로그램에 적용하기 위해서는 elif
를 사용합니다.