우리가 프로그램을 만들 때, 조건에 따라 다른 작업을 수행해야 할 때가 있습니다. 예를 들어, 90점 이상인 학생에겐 A를, 40점 이하인 학생에겐 F를 주는 것처럼 말이죠. 이러한 작업을 수행하기 위해서는 코드에 분기점을 설정하여 조건에 따라 흐름을 나눌 필요가 있습니다. 파이썬에서는 제어문을 통해 조건에 따른 작업을 수행합니다.
if문은 제어문 중 하나로, 조건의 참/거짓에 따라 코드를 적용합니다. if의 뜻인 '만약~'처럼 만약 조건의 참이면 조건 안의 코드를 실행한다는 의미이죠.
if 1 >= 0:
print("이 문장은 출력됩니다.") # 탭을 통해 if문 내부임을 표시합니다.
위의 코드를 보면, 1이 0보다 크거나 같은 것은 True값, 즉 참이기 때문에 결과는 "이 문장은 출력됩니다."가 출력됩니다.
만약 조건이 참이 아닐 경우는 어떻게 해야 할까요? 그때는 else를 사용합니다. else는 if문이 실행되지 않을 때 실행되며, 앞선 모든 조건이 참이 아닌 경우이기에 따로 조건을 지정할 필요가 없습니다.
a = False
if a:
print("이 문장은 출력되지 않습니다.")
else:
print("이 문장은 출력됩니다.") # 결과: 이 문장은 출력됩니다.
다음과 같이 if 내의 조건인 a가 False, 거짓임으로 else 내의 코드가 실행되는 것을 살펴볼 수 있습니다.
if문의 기본적인 구조는 다음과 같습니다.
if 조건:
수행문
else를 포함시킨다면 다음과 같이도 될 수 있죠.
if 조건:
수행문
else:
수행문
하지만, if와 else만으로는 복잡한 조건문을 만들어 내기 어렵습니다. 성적을 매기는 것만 해도 점수 구간별로 A,B,C,D,F 등이 있으니까요. 그렇기에 파이썬에서는 elif를 통해서 복잡한 조건을 검사하는 조건문을 간결하게 해줍니다. elif를 활용한 구조는 다음과 같습니다.
if 조건:
수행문
elif 조건:
수행문
...
elif 조건:
수행문
else:
수행문
elif는 else if의 줄임말로, 위의 조건문들이 참이 아닐 때 실행되는 조건문입니다. 때문에 elif 내 조건을 쓸 때도 위의 조건들을 거짓으로 상정하고 작성해야 하죠.
앞서 말했던 성적 관련 예시를 elif를 활용한 코드로 만들어보면 다음과 같습니다.
score = 90
if score >= 90:
print("You are A")
elif score >= 80:
print("You are B")
elif score >= 70:
print("You are C")
elif score >= 60:
print("You are D")
else:
print("You are F")
위 코드를 보면, 첫 번째 elif에서는 score가 80 이상일 때 "You are B"를 출력하라고 나와 있습니다. 하지만 해당 코드의 결과는 "You are A"가 출력되죠. 이는 elif가 앞선 조건문들이 참이 아닐 때 실행되기 때문에 if문에서 이미 조건을 만족시켜 "You are A"가 출력되게 된 것이죠. 이는 첫 번째 elif의 조건이 위의 조건이 부정된 경우도 포함하여 90 > score >=80을 내포함을 드러냅니다.
if문의 조건으로는 True/False 값으로 판명할 수 있는 것이 와야 합니다. 다음과 같은 것들이 예시가 될 수 있죠.
a = 1
# 관계 연산자
if a == 0:
print("실행")
if a > 0:
print("실행") # 실행
elif a <= 10:
print("실행")
else:
print("실행")
# 포함 확인 연산자
if a in [1, 2, 3, 4, 5]:
print("실행") # 실행
이뿐만 아닌 문자열이나 정수, 리스트 자체가 조건으로 올 수 있습니다. 이때는 True/False값이 아닌 것처럼 보이지만 자료형 변환 파트에서 배웠듯, 이들도 True/False로 판명할 수 있습니다. 예시로, 채워져 있는 문자열은 True, 빈 문자열은 False로 여겨집니다.
if 1:
print("실행") # 실행
if '':
print("실행")
if [1, 2, 3]:
print("실행") # 실행
또한 and, or, not과 같은 논리 연산자를 통해서 조건을 복잡하게 만들 수도 있습니다.
if 1 in [1, 2, 3] and 1 == 1:
print("실행") # 실행
if 5 == 1 or 4 == 4:
print("실행") # 실행
if not 1 == 10:
print("실행") # 실행
pass는 실행문을 비우고도 코드가 실행되게 하는 구문입니다.
if 1 == 1:
pass
원래 조건문 아래 실행문이 없으면 코드에 오류가 발생합니다. 하지만 pass를 사용한다면, 위의 코드와 같이 실행문이 따로 존재하지 않아도 문제 없이 실행되죠. 때문에 세부적인 내용은 뒤로 하고 전체적인 구조만 만들 때 pass를 주로 사용합니다. if문에서만이 아닌 앞으로 배울 내용들에도 자주 등장하니 기억해주세요!