본문 바로가기

python

<누구나 쉽게 배우는 파이썬> 조건문

반응형

 

 

조건문이란 무엇일까요?

조건문이란 프로그래머가 명시한 불린 값(True나 False)에 따라서 특정 코드의 실행 여부를 결정하는 코드입니다. 조건문의 내용을 말로 이야기해보면 "만약 ~~~의 값이 True라면 아래 코드를 실행하여라" 정도로 이야기할 수 있을 것 같습니다. 

 

조건문 if

파이썬에서의 조건문의 기본적인 문법은 아래와 같습니다.

if 불린값:
	참일 때 실행할 코드
	참일 때 실행할 코드
    
조건문과 관계없이 실행되는 코드

위의 코드를 실행한다고 가정하면 불린 값이 참(True)이라면 if문 안의 코드가 실행 될 것이고 거짓(False)이라면 실행되지 않고 넘어가게 될 것입니다.  이때 if문 안의 코드는 들여 쓰기가 되어 있는 코드들을 말합니다. 

그럼 이제 제대로된 코드를 짜 보도록 합시다. 

if True:
	print("it's true")		#실행 됨
if False:
	print("it's false")		#실행 안됨
print("always")				#실행 됨

위의 코드를 실행 한다면 불린 값이 True인 if문 안의 코드만 실행되기 때문에 it's true만 실행될 것이고 if문 밖의 코드도 실행되기 때문에 always 또한 출력 되게 될 것입니다. 

 

불린 값 True나 False를 직접 넣어주는 것은 별 의미가 없습니다. 그 대신 결과 가 불린값으로 나오는 비교 연산자들을 이용할 수 있습니다. ( > < == 등)

if 2 > 1:
	print("1 is bigger than 2")		#실행 안됨
if 1 < 2:
	print("1 is smaller than 2")		#실행 됨

2 > 1의 값은 False이므로 첫 번째 if문 안의 코드는 실행 되지 않을 것이고 1 < 2의 값은 True이므로 두 번째 if문 안의 코드는 실행 되어 1 is smaller than 2는 출력이 될 것입니다. 

 

그런데 이것도 의미가 없는 조건문이긴 합니다. 실행할 때 마다 위의 조건문은 항상 실행 되지 않을 것이고 아래 조건문은 항상 실행 되기 때문에 굳이 조건문을 쓰는 의미가 없습니다. 변수를 사용하여 의미 있는 조건문을 작성해 봅시다.

age = int(input("만 나이를 입력하시오"))		#비교연산자를 사용하기 위해 int로 형변환 필요

if age >= 19:
	print("성인")
if age < 19:
	print("미성년자")

19이상의 수를 입력한다면 성인이 출력될 것이고 19미만의 수를 입력한다면 미성년자가 출력될 것입니다. 

 

조건문 elif

else if를 줄인 말입니다. if가 "만약 ~~~의 값이 True라면 아래 코드를 실행하여라" 였다면 elif는 "위의 조건문이 False이고 내가 True라면 수행하라" 라고 할 수 있습니다. 따라서 elif문을 사용하려면 위에 단 한개의 if문이 있을 때 사용할 수 있습니다. 

age = int(input("나이를 입력하시오"))		#비교연산자를 사용하기 위해 int로 형변환 필요

if age >= 20:
	print("성인")
elif age >= 17:
	print("고등학생")
elif age >= 14:
	print("중학생")
elif age >= 8:
	print("초등학생")

위의 코드를 실행했을 때 입력한 나이에 따라

20 이상이면 성인 출력

20 이상이 아니고 17 이상이면 고등학생 출력,

17 이상이 아니고 14 이상이면 고등학생 출력,

14 이상이 아니고 8 이상이면 초등학생 출력,

8 보다 작으면 아무것도 출력되지 않을 것입니다. 

 

그런데 아래의 두 코드는 어떻게 다른 걸까요?

age = int(input("만 나이를 입력하시오"))

if age >= 19:
	print("성인")
if age < 19:
	print("미셩년자")
age = int(input("만 나이를 입력하시오"))

if age >= 19:
	print("성인")
elif age < 19:
	print("미셩년자")

실행 해 보았을 때 결과는 똑같이 나올 것입니다. 하지만 컴퓨터는 조금 다르게 실행 합니다. 

위 코드는 아래 조건문이 if문이기 때문에 위 조건문의 조건의 True False여부와 상관없이 age < 19 의 값을 확인 합니다. 하지만 아래 코드는 elif이기 때문에 위 if문의 조건이 True 라면 age < 19의 값을 확인 하지않고 건너 뜁니다.

 

조건문 else

else문 안의 코드는 위의 if문과 else문이 모두 실행 되지 않았을 때 실행됩니다. 

따라서 else문에는 조건을 써주지 않습니다. 

age = int(input("나이를 입력하시오"))		#비교연산자를 사용하기 위해 int로 형변환 필요

if age >= 20:
	print("성인")
elif age >= 17:
	print("고등학생")
elif age >= 14:
	print("중학생")
elif age >= 8:
	print("초등학생")
else:
	print("미취학아동")

age가 8보다 작다면 미취학아동이 출력 될 것입니다. 

 

exercise

조건문과 친해 지셨다면 백준에서 문제 하나를 풀어보고 마무리 하도록 합시다.

https://www.acmicpc.net/problem/9498

 

9498번: 시험 성적

시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

점수를 입력받고 성적을 출력하는  문제입니다. 위의 나이 예제를 참고하여 해결하여 봅시다. 

더보기
a = int(input())
if a>=90:
    print("A")
elif a>=80:
    print("B")
elif a>=70:
    print("C")
elif a>=60:
    print("D")
else:
    print("F")
반응형