티스토리 뷰

온라인에서 쇼핑을 하다 보면 다양한 할인 혜택을 만날 수 있습니다. 첫 구매 할인, 신용 카드 할인, 학생 할인, 생일 할인, 연간 회원 할인 등등 말이죠. 만약 첫 구매 할인으로 10% 혜택을 받는다면 10만원짜리 물건의 최종 결제 금액은 9만원이 됩니다. 같은 물건을 한 번 더 사면 어떻게 될까요? 이제는 첫 구매가 아니므로 별도의 할인 혜택 없이 10만원을 모두 지불해야 합니다. 이렇듯 "첫 구매이면", "무슨 카드를 쓰면", "학생이면" 등등의 조건에 따라 동작이 달라지는 것, 이것을 프로그래밍에서 "분기" 라고 표현합니다.

 

코드에서 분기는 if 를 사용하며 기본적인 형식은 이렇습니다.

if 조건:
    실행 명령문

우리가 외출을 할 때 바깥 날씨에 따라 준비물이 달라질 수 있는데요. 비가 온다면 우산을 챙기도록 알려주는 프로그램을 만들어 보겠습니다.

weather = "비"

if weather == "비": # = 은 2번 써야 해요!!
    print("우산을 챙기세요")

weather 변수에는 "비"라는 값이 들어가있고, if 를 통해서 변수의 값이 "비"인지를 확인하여 맞다면 "우산을 챙기세요" 라는 값을 출력합니다. 이 때 값을 비교하기 위해서는 = 을 2번 써야 한다는 것, 기억하시죠?

 

if 조건문의 끝에는 콜론(:) 이 붙습니다. 그리고 if 조건에 만족할 때 실행해야 하는 문장들은 if 위치를 기준으로 공백(스페이스) 4칸씩 들여쓰기를 해야 합니다. 들여쓰기 여부에 따라 동작이 완전히 달라지게 되니 반드시 주의해주시고, 들여쓰기를 위한 공백의 갯수가 하나만 잘못되어도 코드는 올바르지 않게 되므로 이 또한 조심해야 합니다.

잠깐!

파이썬에서는 들여쓰기가 굉장히 중요합니다. 예를 들어서

if 만약 초코파이가 있으면:
    초코파이를 사와
오예스를 사와

이렇게 하면 초코파이가 있을 땐 초코파이+오예스를, 없을 땐 오예스만 사게 됩니다. 반면에

if 만약 초코파이가 있으면:
    초코파이를 사와
    오예스를 사와

이렇게 하면 초코파이가 있을 때만 초코파이+오예스를 사게 되며, 없을 땐 아무것도 사지 않게 됩니다.

 

오늘 날씨가 맑다면 어떨까요? 첫 줄만 바꿔서 실행해보겠습니다.

weather = "맑음" # 맑음으로 바꾸면 실행 안됨

if weather == "비":
    print("우산을 챙기세요")

아무것도 출력이 안되지요? 바로 if 조건에 맞지 않기 때문에 print() 문이 실행되지 않고 프로그램이 끝난 것입니다.

 

밖에 비는 안오는데 미세먼지가 많다면 무엇을 챙겨야 할까요? 맞습니다. 마스크를 챙겨야겠지요. 이럴 때는 elif 란 것을 활용할 수 있습니다.

weather = "미세먼지"

if weather == "비":
    print("우산을 챙기세요") # 1번
elif weather == "미세먼지":
    print("마스크를 챙기세요") # 2번

이 코드는 weather 가 "비"일 때는 1번 문장이, "미세먼지"일 때는 2번 문장이 출력되며, 이도 저도 아닐 때는 아무 문장도 출력되지 않게 됩니다. 이 때 if 는 처음 딱 1번만 사용할 수 있지만 elif 는 필요한 만큼 여러 번 사용할 수 있습니다. elif 도 if 와 마찬가지로 끝에 콜론(:) 을 붙이고 실행 명령문들은 모두 들여쓰기를 해주어야 합니다.

if 조건1:
    실행 명령문1
elif 조건2:
    실행 명령문2
elif 조건3:
    실행 명령문3
...

이번에는 비도 안오고 미세먼지도 없을 때 뭔가를 출력해보겠습니다. if 와 elif 들의 모든 조건에 해당하지 않을 때 어떤 명령을 실행하기 위해서는 else 를 사용합니다.

if 조건1:
    실행 명령문1
elif 조건2:
    실행 명령문2
elif 조건3:
    실행 명령문3
else:
    실행 명령문4 # 위 모든 조건들에 해당하지 않을 때 실행

다음과 같이 weather 변수 값을 바꾸고 else 문을 추가하여 실행해보면, 모든 조건에 해당하지 않으므로 "준비물 필요 없어요" 가 출력됩니다.

weather = "맑아요"

if weather == "비":
    print("우산을 챙기세요")
elif weather == "미세먼지":
    print("마스크를 챙기세요")
else:
    print("준비물 필요 없어요")

 

이번에는 프로그램을 조금 더 생동감 있게 하기 위해 input() 을 사용해보겠습니다. input() 은 프로그램 실행 시점에 사용자로부터 어떤 값을 입력받는 용도로 사용합니다. 사용자가 값을 입력하고 엔터를 치면 그 값은 항상 "문자열" 형태로 변수에 저장이 됩니다. 이 때 만약 숫자 3을 입력해도 문자열 "3"으로 인식한다는 점을 주의해주세요.

다음과 같이 코드를 작성하고 실행해보겠습니다.

weather = input("오늘 날씨는 어때요? ")
print(weather) # 사용자가 입력한 값 출력

그러면 여기까지만 실행을 하고 사용자의 입력을 기다리게 됩니다.

"맑아요" 라고 입력을 하고 엔터를 치면 조금 전에 입력한 내용이 그대로 출력됩니다.

 

코드를 조금 더 완성해보겠습니다.

다음과 같이 입력 후 여러 번 실행하되, 입력값은 비, 미세먼지, 맑아요 등으로 바꿔가면서 해보시면 어떻게 동작하는지 보다 쉽게 이해할 수 있습니다.

weather = input("오늘 날씨는 어때요? ")
# print(weather) # 사용자가 입력한 값 출력 # 주석 처리

if weather == "비":
    print("우산을 챙기세요")
elif weather == "미세먼지":
    print("마스크를 챙기세요")
else:
    print("준비물 필요 없어요")

 

그런데 생각해보니 우산은 꼭 비가 올 때만 챙겨야하는 준비물은 아닌 것 같네요. 눈이 많이 오는 날에도 우산을 챙길 필요가 있겠지요? 그럴 때는 if 조건을 이렇게 변경하면 됩니다.

weather = input("오늘 날씨는 어때요? ")
# print(weather) # 사용자가 입력한 값 출력 # 주석 처리

if weather == "비" or weather == "눈": # 조건 변경
    print("우산을 챙기세요")
elif weather == "미세먼지":
    print("마스크를 챙기세요")
else:
    print("준비물 필요 없어요")

이제는 사용자가 "비" 또는 "눈"을 입력하는 2가지 경우에 대해 "우산을 챙기세요" 가 출력됩니다.

 

 

새로운 예제를 작성해볼까요? 이번에는 기온을 입력받아서 조건에 따른 처리를 해보겠습니다.

먼저 사용자로부터 정수 형태의 기온을 받는다고 가정하겠습니다. 이 때 input() 은 항상 문자열로 인식한다고 했으니 정수형으로 변환하기 위해 int() 로 input() 을 감싸주겠습니다.

temp = int(input("기온은 어때요? "))

그리고 temp 변수의 값에 따른 동작을 다음과 같이 정의합니다.

if 30 <= temp: # 30 도 이상이면
    print("너무 더워요. 나가지 마세요")
elif 10 <= temp and temp < 30: # 10도 이상 30도 미만이면
    print("괜찮은 날씨에요")
elif 0 <= temp and temp < 10: # 0도 이상 10도 미만이면
# 위 비교 문장은 이렇게도 작성 가능합니다.
# elif 0 <= temp < 10:
    print("외투를 챙기세요")
else: # 그 외의 모든 경우 (0도 미만이면)
    print("너무 추워요. 나가지 마세요")

프로그램을 반복 실행하여 다양한 기온을 입력하며 동작을 확인해보세요.

 

예제에서는 35, 20, 5, -20 을 순서대로 입력하였습니다.

 

if 문은 굉장히 중요하며 무척 많이 쓰이기 때문에 사용법 및 동작 방식을 반드시 이해하도록 합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함