본문 바로가기
코딩교육/Python 초등교육에서 전문가까지

2단계 : 2. 조건문 (조건문 중첩과 효율적인 사용법)

by 제리토리 2025. 2. 21.
728x90
반응형

 

Python에서 조건문 중첩(Nested Conditional Statements)은 하나의 if 문 안에 또 다른 if 문을 포함하는 구조입니다. 중첩 조건문을 사용하면 복잡한 논리 흐름을 구현할 수 있지만, 코드가 길어지고 가독성이 저하될 수 있습니다. 따라서 조건문을 효율적으로 사용하는 방법을 익히는 것이 중요합니다.

 

 

1. 중첩 조건문의 개념과 기본 구조

 

㉮ 중첩 조건문이란?

  • 중첩 조건문 (Nested Conditional Statements) 은 하나의 if 문 내부에 또 다른 if 문이 포함된 구조를 의미합니다.

㉯ 기본 구조

if 조건1:
    if 조건2:
        실행 코드
    else:
        실행 코드
else:
    실행 코드

 

 

 

2. 중첩 조건문의 예제

 

㉮ 기본 중첩 조건문

  • 아래 예제는 사용자가 입력한 숫자가 양수인지, 음수인지, 그리고 짝수인지 홀수인지를 판단하는 코드입니다.
num = int(input("숫자를 입력하세요: "))

if num >= 0:  # 첫 번째 조건 : 양수 또는 0인지 확인
    print("양수 또는 0입니다.")
    if num % 2 == 0: # 두 번째 조건 : 짝수인지 확인
        print("짝수입니다.")
    else:
        print("홀수입니다.")
else:
    print("음수입니다.")

 

실행 결과 예시

숫자를 입력하세요: 4
양수 또는 0입니다.
짝수입니다.

 

 

 

3. 중첩 조건문의 문제점

 

중첩 조건문이 많아지면 다음과 같은 문제점이 발생할 수 있습니다.

 

㉮ 가독성 저하

  • 코드가 깊어질수록 이해하기 어려워짐

㉯ 디버깅 어려움

  • 논리 오류가 발생했을 때 원인을 찾기 어려움

㉰ 불필요한 연산 증가

  • 중복되는 조건을 제거하지 않으면 불필요한 연산이 수행됨

예제 : 중첩 조건문이 비효율적인 경우

score = 85

if score >= 60:
    if score >= 80:
        if score >= 90:
            print("A 학점")
        else:
            print("B 학점")
    else:
        print("C 학점")
else:
    print("F 학점")

위 코드는 중첩이 과도하여 비효율적이며, 불필요한 조건 검사(score >= 80, score >= 90)가 반복됩니다.

 

 

 

4. 중첩 조건문을 효율적으로 사용하는 방법

 

㉮ elif 문 활용

  • elif 문을 사용하면 중첩을 줄일 수 있습니다.
score = 85

if score >= 90:
    print("A 학점")
elif score >= 80:
    print("B 학점")
elif score >= 60:
    print("C 학점")
else:
    print("F 학점")

 

개선 후 장점

  • 가독성 향상 : 조건을 논리적으로 정리하여 한눈에 이해하기 쉬움.
  • 불필요한 연산 감소 : 조건이 충족되면 이후 조건은 검사하지 않음.

㉯ and 연산자를 활용한 중첩 제거

  • 두 개 이상의 조건을 동시에 검사해야 하는 경우, 중첩된 if 문 대신 and 연산자를 사용할 수 있습니다.

비효율적인 중첩 조건문

age = 25
income = 4000

if age >= 10:
    if income >= 3000:
        print("대출 신청 가능")

 

효율적인 코드 (and 연산자 활용)

if age >= 18 and income >= 3000:
    print("대출 신청 가능")

 

개선 후 장점

  • 불필요한 중첩 제거 : 중복된 if 문을 단일 조건으로 처리
  • 간결한 코드 유지 : 코드 길이를 줄이고, 논리 흐름을 쉽게 이해할 수 있음

㉰ return 또는 break를 활용한 조건문 단순화

  • 반복문에서 조건문을 효율적으로 사용하려면 return 또는 break를 활용하여 불필요한 중첩을 줄일 수 있습니다.

비효율적인 중첩 구조

def check_eligibility(age):
    if age >= 18:
        if age < 65:
            return "근로 가능 연령"
        else:
            return "은퇴 연령"
    else:
        return "미성년자"

 

개선된 코드 (return 활용)

def check_eligibility(age):
    if age < 18:
        return "미성년자"
    if age >= 65:
        return "은퇴 연령"
    return "근로 가능 연령"

 

개선 후 장점

  • 중첩 구조 제거 : 조건을 간결하게 정리
  • 코드 가독성 증가 : 논리적 흐름을 직관적으로 이해 가능

 

 

5. 중첩 조건문으로 실용적인 예제

 

㉮ 로그인 시스템

  • 사용자의 아이디와 비밀번호를 확인하는 간단한 로그인 시스템을 작성합니다.

비효율적인 코드

username = "admin"
password = "1234"

input_user = input("아이디: ")
if input_user == username:
    input_pass = input("비밀번호: ")
    if input_pass == password:
        print("로그인 성공!")
    else:
        print("비밀번호가 틀렸습니다.")
else:
    print("아이디가 존재하지 않습니다.")

 

효율적인 코드 (and 연산자 활용)

username = "admin"
password = "1234"

input_user = input("아이디: ")
input_pass = input("비밀번호: ")

if input_user == username and input_pass == password:
    print("로그인 성공!")
else:
    print("아이디 또는 비밀번호가 틀렸습니다.")

 

 

 

6. 요약

 

  • 중첩 조건문은 복잡한 논리를 처리할 때 유용하지만, 과도한 사용은 피해야 합니다.
  • elif 문을 활용하여 불필요한 중첩을 제거하면 가독성을 높일 수 있습니다.
  • and, or 연산자를 활용하면 논리 흐름을 단순화할 수 있습니다.
  • return, break를 활용하면 조건문을 간결하게 만들 수 있습니다.
  • 효율적인 조건문 작성을 통해 코드의 성능과 유지보수성을 향상할 수 있습니다.
728x90
반응형