WeniVooks

검색

견고한 파이썬

if, elif, else문과 중첩 조건문

1. if - else

if문을 사용하면 조건을 기반으로 서로 다른 코드 블록을 실행할 수 있습니다. 그러나 조건이 많아질수록 if문만으로는 코드를 효율적으로 관리하기 어렵습니다. 이러한 문제를 해결하기 위해, else문을 사용하여 if문의 조건이 거짓이거나 충족되지 않는 경우를 처리할 수 있습니다.

이제 if문과 else문을 활용한 기본적인 조건문의 구조를 살펴보겠습니다.

# if, else문의 기본구조
if 조건문: # 조건문을 확인해서 만약 '참'이면 if 문 다음에 문장들은 수행합니다.
    pass
	  # 수행할 문장 1
else: # if문의 조건이 거짓이면 else 문이 실행됩니다.
    pass
	  # 수행할 문장 2
# if, else문의 기본구조
if 조건문: # 조건문을 확인해서 만약 '참'이면 if 문 다음에 문장들은 수행합니다.
    pass
	  # 수행할 문장 1
else: # if문의 조건이 거짓이면 else 문이 실행됩니다.
    pass
	  # 수행할 문장 2

if 문의 조건문을 확인해서 만약 이면 수행할 문장 1 , 조건이 거짓이면 else 문이 실행되어 수행할 문장 2 가 수행됩니다.

x = 3 y = 1 if x > y: print('첫 번째 값이 더 큽니다.') else: print('두 번째 값이 더 크거나 같습니다.')

2. if - elif - else

두 개의 조건만 있을 경우에는 if-else를 주로 활용하지만 세 개 이상의 여러 개의 조건을 한꺼번에 검사해야 할 경우에는 elif를 사용합니다. elif는 필요한 만큼 사용할 수 있습니다. 그리고 마지막에 else를 사용함으로써 조건에 대해서 마무리하게 됩니다.

# if, elif, else문의 기본구조
 
if 조건문: # 조건문을 확인해서 만약 '참'이면 if 문 다음에 문장들은 수행합니다.
	  # 수행할 문장 1
    pass
elif: # if문의 조건이 '참'이 아니라면 elif 문의 조건문이 참이라면 수행한다.
	  # 수행할 문장 2
    pass
else: # 위 모든 if문, elif문의 조건이 '참'이 아니라면 수행합니다.
	  # 수행할 문장 3
    pass
# if, elif, else문의 기본구조
 
if 조건문: # 조건문을 확인해서 만약 '참'이면 if 문 다음에 문장들은 수행합니다.
	  # 수행할 문장 1
    pass
elif: # if문의 조건이 '참'이 아니라면 elif 문의 조건문이 참이라면 수행한다.
	  # 수행할 문장 2
    pass
else: # 위 모든 if문, elif문의 조건이 '참'이 아니라면 수행합니다.
	  # 수행할 문장 3
    pass

위 코드에서 if나 elif문 뒤가 참이면 코드를 수행하고, 모두 거짓일 경우 else문을 출력합니다.

아래 성적을 입력받아 학점을 매기는 프로그램을 작성한다 생각해보겠습니다.

score = int(input("성적을 입력하세요 (0-100): ")) if score >= 90: print("A") elif 90 > score >= 80: print("B") elif 80 > score >= 70: print("C") elif 70 > score >= 60: print("D") else: print("F")

위 코드는 아래와 같이 변경할 수 있습니다.

score = int(input("성적을 입력하세요 (0-100): ")) if score >= 90: print("A") elif score >= 80: print("B") elif score >= 70: print("C") elif score >= 60: print("D") else: print("F")

이미 첫 번째 코드에서 False라는 것은 그 아래 점수는 90점 미만이라는 의미가 내포되어 있기 때문입니다.

아래에 있는 예제를 통하여 좀 더 알아보겠습니다. score에 따라 용돈을 받는 코드입니다.

score = 81 money = 0 if score >= 90: money += 1000000 elif score >= 80: money += 100000 elif score >= 70: money += 10000 elif score >= 60: money += 1000 else: money = 0 print(money) # 출력: 100000

위 구문에서 elif로 되어 있는 부분을 모두 if로 바꿔보도록 하겠습니다.

score = 81 money = 0 if score >= 90: money += 1000000 if score >= 80: money += 100000 if score >= 70: money += 10000 if score >= 60: money += 1000 else: money = 0 print(money) # 출력: 111000

매번 if문에 걸리기 때문에 용돈을 111,000원 받게 됩니다. 또한 매번 if 뒤에 조건을 검사하니 코드의 성능도 떨어집니다. 아래처럼 작성되었을 때 첫 번째 사용했던 예제와 결과도 같고, 의도한 바대로 용돈도 10만 원을 받지만, 성능은 떨어집니다.

score = 81 money = 0 if score >= 90: money += 1000000 if 90 > score >= 80: money += 100000 if 80 > score >= 70: money += 10000 if 70 > score >= 60: money += 1000 else: money = 0 print(money)

elif와 else 단독으로는 사용할 수 없으며, elif는 if가 있어야만, else는 if, elif나 뒤에서 배울 for, while이 있어야만 사용할 수 있습니다.

score = 100 else: print('hello') # error

3. 중첩 if - elif문 사용하기

중첩 조건문은 조건문 안에 또 다른 조건문을 포함하는 것으로, 코드의 흐름을 다양한 경로로 분기시킬 수 있게 합니다.

# if를 중첩해서 사용하기 movie = { '영화': '레미제라블', '장르': '드라마', '서비스': '디즈니', '비용': 15000, '평점': 4.9 } if movie['장르'] == '드라마': if movie['서비스'] == '디즈니' or movie['서비스'] == '넷플릭스': if movie['평점'] >= 4.5: if movie['비용'] <= 20000: print('영화시청') # 출력: 영화시청

이렇게 중첩되어 있는 조건문은 and를 사용하여 아래와 같이 변경할 수 있습니다.

# if를 중첩해서 사용하기 # 간략해진 것 맞나요? movie = { '영화': '레미제라블', '장르': '드라마', '서비스': '디즈니', '비용': 15000, '평점': 4.9 } if movie['장르'] == 'SF' and (movie['서비스'] == '디즈니' or movie['서비스'] == '넷플릭스') and movie['평점'] >= 4.5 and movie['비용'] <= 20000: print('영화시청') # 출력: 영화시청

다만 이렇게 하였을 경우 가독성이 안 좋아진 것을 한 눈에 파악할 수 있습니다. 따라서 and로 if 조건을 묶을 경우 의미와 맥락을 파악하여 적절한 곳에서 묶어 가독성을 높여야 합니다.

movie = { '영화': '레미제라블', '장르': '드라마', '서비스': '디즈니', '비용': 15000, '평점': 4.9 } if movie['장르'] == 'SF': if movie['서비스'] == '디즈니' or movie['서비스'] == '넷플릭스': if movie['평점'] >= 4.5 and movie['비용'] <= 20000: print('영화시청') # 출력: 영화시청

중첩된 조건문에서는 elif, else을 모두 사용할 수 있습니다.

movie = { '영화': '레미제라블', '장르': '드라마', '서비스': '왓챠', '비용': 15000, '평점': 4.9 } if movie['장르'] == 'SF': if movie['서비스'] == '디즈니' or movie['서비스'] == '넷플릭스': if movie['평점'] >= 4.5 and movie['비용'] <= 20000: print('영화시청') else: print(movie['서비스'] + ' 구독하기!') # 출력: 왓챠 구독하기!
{"packages":["numpy","pandas","matplotlib","lxml"]}
8.1 if문8.3 match문