제어문

파이썬의 제어구문은 프로그램의 흐름을 제어하는 데 사용됩니다. 조건문과 반복문이 주된 제어구문이며, 추가로 예외 처리를 위한 구문도 포함됩니다.


1. 조건문 (Conditional Statements)

(1) if, elif, else

  • 특정 조건에 따라 코드 블록을 실행하거나 건너뛰는 데 사용됩니다.
  • 구문 형식:

    if 조건식:
        실행할 코드
    elif 다른 조건식:
        실행할 코드
    else:
        실행할 코드
    

  • 예제:

    score = 85
    if score >= 90:
        print("A등급")
    elif score >= 80:
        print("B등급")
    else:
        print("C등급")
    

(2) 중첩 조건문

  • 조건문 안에 또 다른 조건문을 포함.
  • 예제:
    age = 20
    has_ticket = True
    if age >= 18:
        if has_ticket:
            print("입장 가능")
        else:
            print("티켓이 필요합니다")
    else:
        print("나이가 부족합니다")
    

(3) 조건 표현식 (삼항 연산자)

  • 단일 표현식으로 조건에 따라 값을 선택.
  • 구문 형식:

    참일   if 조건식 else 거짓일  
    

  • 예제:

    age = 18
    category = "성인" if age >= 18 else "미성년자"
    print(category)  # 성인
    


2. 반복문 (Loops)

(1) for

  • 반복 가능한 객체(리스트, 문자열, 튜플 등)를 순회.
  • 구문 형식:

    for 변수 in 반복 가능한 객체:
        실행할 코드
    

  • 예제:

    for i in range(5):
        print(i)  # 0, 1, 2, 3, 4
    

  • 중첩 for:

    for i in range(3):
        for j in range(2):
            print(f"i={i}, j={j}")
    

(2) while

  • 조건식이 참인 동안 코드 블록을 반복.
  • 구문 형식:

    while 조건식:
        실행할 코드
    

  • 예제:

    count = 0
    while count < 5:
        print(count)
        count += 1
    

(3) 반복 제어 구문

  • break: 반복문을 즉시 종료.

    for i in range(10):
        if i == 5:
            break
        print(i)  # 0, 1, 2, 3, 4
    

  • continue: 현재 반복을 건너뛰고 다음 반복으로 이동.

    for i in range(5):
        if i == 2:
            continue
        print(i)  # 0, 1, 3, 4
    

  • else: 반복문이 정상 종료된 경우 실행.

    for i in range(5):
        print(i)
    else:
        print("반복 종료")  # 반복문이 break 없이 종료되면 실행
    


3. 예외 처리 (Exception Handling)

(1) try, except, else, finally

  • 프로그램 실행 중 발생할 수 있는 오류를 처리하여 중단을 방지.
  • 구문 형식:

    try:
        실행할 코드
    except 예외 종류:
        예외 처리 코드
    else:
        예외가 발생하지 않을  실행할 코드
    finally:
        항상 실행할 코드
    

  • 예제:

    try:
        num = int(input("숫자를 입력하세요: "))
        print(10 / num)
    except ZeroDivisionError:
        print("0으로 나눌 수 없습니다.")
    except ValueError:
        print("숫자를 입력해야 합니다.")
    else:
        print("정상적으로 처리되었습니다.")
    finally:
        print("프로그램 종료")
    


4. 컴프리헨션 (Comprehension)

(1) 리스트 컴프리헨션

  • 설명: 반복문을 사용하여 리스트를 간결하게 생성.
  • 구문 형식:

    [표현식 for 변수 in 반복 가능한 객체 if 조건식]
    

  • 예제:

    squares = [x**2 for x in range(10) if x % 2 == 0]
    print(squares)  # [0, 4, 16, 36, 64]
    

(2) 딕셔너리 컴프리헨션

  • 예제:
    keys = ['a', 'b', 'c']
    values = [1, 2, 3]
    dictionary = {k: v for k, v in zip(keys, values)}
    print(dictionary)  # {'a': 1, 'b': 2, 'c': 3}
    

(3) 집합 컴프리헨션

  • 예제:
    unique_squares = {x**2 for x in range(10)}
    print(unique_squares)  # {0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
    

5. 함수와 관련된 제어 구문

(1) return

  • 함수에서 값을 반환하고 실행 종료.
  • 예제:
    def add(a, b):
        return a + b
    print(add(2, 3))  # 5
    

(2) pass

  • 실행할 코드가 없을 때 사용.
  • 예제:
    if True:
        pass  # 아무 작업도 하지 않음
    

(3) yield

  • 제너레이터 함수에서 값을 반환하고 상태를 유지.
  • 예제:
    def generate_numbers():
        for i in range(3):
            yield i
    for num in generate_numbers():
        print(num)  # 0, 1, 2
    

요약

  • 조건문: if, elif, else로 분기 처리.
  • 반복문: for, while로 반복 처리. break, continue, else로 제어 가능.
  • 예외 처리: try, except, else, finally로 오류 관리.
  • 컴프리헨션: 반복문과 조건을 간결하게 활용.
  • 기타: pass, return, yield로 추가 흐름 제어.

제어구문을 잘 활용하면 복잡한 프로그램도 간결하고 효율적으로 작성할 수 있습니다. 😊