앞에서까지는 하나의 if-else 문장만을 사용하였습니다.
하지만 만약 조건문 안에 조건문을 넣어야 한다면 어떻게 해야 할까요?
if-else 문장 안에 다른 if-else 문장을 넣을 수 있는데 이것을 중첩(nesting)된 if-else문 이라고 부릅니다.
if-else 문장 안에는 여러 개의 if-else 문장이 포함될 수 있습니다.
들여쓰기로 중첩의 수준을 알 수 있는데 이러한 구조는 혼동을 불러올 수 있기 때문에 많이 사용하는 것은 자제해야 합니다.
if 조건1:
문장 A
else:
if 조건2:
문장 B
else:
문장 C

예를 들면 인터넷에서 새로 나온지 1년이 되지 않은 레드벨벳 앨범을 사기로 했을 때 앨범이 개당 20,000원 미만이면 2개를 삽니다.
하지만 앨범이 개당 20,000원 이상이면 1개만 살 때 다음과 같이 프로그램으로 작성할 수 있습니다.
albumDay = int(input("앨범이 나온 지 며칠 지났나요? : "))
albumPrice = int(input("앨범 1개의 가격을 입력하시오 : "))
if albumDay < 365:
if albumPrice < 20000:
print("2개를 산다")
else:
print("1개를 산다")
else:
print("앨범을 사지 않는다")
<실행 결과>
앨범이 나온 지 며칠 지났나요? : 365
앨범 1개의 가격을 입력하시오 : 19000
앨범을 사지 않는다
앨범이 나온 지 며칠 지났나요? : 300
앨범 1개의 가격을 입력하시오 : 21000
1개를 산다
1. 봉민이는 홈페이지를 만드는 연습을 하기 위해 아이디를 입력받아 등록된 아이디인지를 검사하는 프로그램을 만들고자 합니다.
아이디는 리스트(list)에 저장하고 비밀번호는 'redvelvet' 으로 고정하여 아이디와 패스워드를 물어보는 프로그램을 만들어 봅시다.
<리스트 예시>
user_list = ['아이린', '슬기', '웬디', '조이', '예리']
<실행 결과>
아이디 : 슬기
패스워드를 입력하시오 : redvelvet
환영합니다!
아이디 : 슬기
패스워드를 입력하시오 : seulgi
잘못된 패스워드입니다 ㅠㅠ
아이디 : 봉민
알 수 없는 사용자입니다!
2. 봉민이는 어느 날 동생이 10월이 30일까지 있는지, 31일까지 물어봤을 때 답하지 못하여 동생을 위한 프로그램을 만들기로 하였습니다.
특정 달이 입력되면 그 달의 일 수를 출력하는 프로그램을 만들어 봅시다.
2월은 윤년일 경우 바뀌기 때문에 추가로 연도를 입력받고 아래의 조건을 사용합니다.
<조건>
( (연도가 4로 나누어 떨어짐) and (100으로 나누어 떨어지는 연도는 제외) ) or (400으로 나누어 떨어짐) )
<실행 결과>
월을 입력하세요 : 2
연도를 입력하세요 : 2018
월의 날수는 28일입니다.
월을 입력하세요 : 2
연도를 입력하세요 : 2016
월의 날수는 29일입니다.
월을 입력하세요 : 12
월의 날 수는 31일입니다.
3. 봉민이는 아이언맨의 "자비스" 같은 인공 지능을 만들고 싶어 그 시작으로 숫자를 입력하면 문자로 변환하는 프로그램을 만들기 시작했습니다.
사용자가 123을 입력하면 "일백이십삼" 이라고 출력하는 프로그램을 만들어 봅시다. 단 999보다 작은 수라고 가정합니다.
<출력 결과>
숫자를 입력하세요 : 392
삼백구십이
숫자를 입력하세요 : 205
이백오
숫자를 입력하세요 : 43
사십삼
4. 3번 문제를 구현한 봉민이는 자신감이 생겨 이번에는 현재 시각마다 적절한 인사를 출력하는 기능을 추가하려고 합니다.
현재 시각에 따라 연속적인 if문을 사용하여 프로그램을 작성하여 봅시다.
<조건>
파이썬에서 현재 월과 시각을 얻어오는 방법은 아래의 예제를 참고하기 바랍니다.
import time
now = time.localtime()
print("현재 시간은 ", time.asctime())
print("현재 월 : ", now.tm_mon)
print("현재 시: %d" % (now.tm_hour))
<실행 결과>
현재 시간은 Fri Mar 30 16:06:45 2018
봄이네요
Good afternoon