프로그래밍/파이썬(Python)

파이썬(Python) 제어문: 조건문과 반복문으로 흐름 제어하기 (+QnA)

프리다이어비티즈 2024. 11. 20. 12:47

목차

    파이썬(Python)에서 제어문은 프로그램의 흐름을 제어하는 중요한 요소입니다. 제어문을 사용하면 코드가 특정 조건에 따라 다르게 동작하도록 하거나, 반복적으로 수행될 수 있습니다. 이번 글에서는 조건문반복문을 사용해 파이썬에서 프로그램의 흐름을 어떻게 제어하는지 자세히 알아보겠습니다.

    공지

    본 포스팅의 무단도용 및 배포를 금지합니다.

    1. 조건문(Conditional Statement)

    조건문은 프로그램이 특정 조건에 따라 다른 실행 경로를 가지도록 합니다. 파이썬에서는 if, elif, else 키워드를 사용해 조건문을 구성할 수 있습니다.

     

    1. if 조건문
    if 문은 특정 조건이 참(True)일 때만 코드를 실행합니다.

    age = 20
    if age >= 18:
        print("성인입니다.")  # age가 18 이상인 경우에만 실행

     

    2. if-else 조건문
    if 문 뒤에 else를 사용하면 조건이 거짓(False)일 때 실행할 코드를 지정할 수 있습니다.

    age = 16
    if age >= 18:
        print("성인입니다.")
    else:
        print("미성년자입니다.")  # age가 18 미만인 경우 실행

     

    3. if-elif-else 조건문
    elif는 else if의 줄임말로, 여러 조건을 순차적으로 검사하고 그 중 하나가 이면 해당 블록을 실행합니다.

    score = 85
    if score >= 90:
        print("A학점")
    elif score >= 80:
        print("B학점")  # score가 80 이상 90 미만인 경우 실행
    elif score >= 70:
        print("C학점")
    else:
        print("F학점")

     

    4. 중첩 조건문
    조건문 안에 다른 조건문을 넣어 중첩 조건문을 작성할 수 있습니다.

     
    age = 20
    gender = "female"
    if age >= 18:
        if gender == "female":
            print("성인 여성입니다.")
        else:
            print("성인 남성입니다.")
    else:
        print("미성년자입니다.")

     

    5. 조건부 표현식 (삼항 연산자)
    한 줄로 간단하게 조건을 평가하고 결과를 반환하려면 삼항 연산자를 사용할 수 있습니다.

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

     

    2. 반복문(Loops)

    반복문은 특정 코드 블록을 여러 번 반복해서 실행할 때 사용됩니다. 파이썬에는 forwhile 두 가지 반복문이 있습니다.

     

    1. for 반복문
    for 반복문은 시퀀스 데이터 타입(예: 리스트, 문자열, 튜플)의 각 요소를 순차적으로 반복할 때 사용합니다.

    numbers = [1, 2, 3, 4, 5]
    for number in numbers:
        print(number)

    위 예제는 리스트의 각 요소를 한 번씩 출력합니다.

     

    2. range 함수와 for 반복문
    range() 함수는 반복 횟수를 지정할 때 많이 사용됩니다.

    for i in range(5):
        print(i)  # 0부터 4까지 출력

    range(5)는 0부터 4까지의 숫자를 생성합니다. range(start, stop, step) 형태로 시작점과 종료점, 증감폭을 지정할 수도 있습니다.

     

    3. while 반복문
    while 반복문은 조건이 참(True)인 동안 코드를 반복 실행합니다. 조건이 거짓(False)이 되면 반복문이 종료됩니다.

    count = 0
    while count < 5:
        print(count)
        count += 1  # count를 1씩 증가시킴

    위 예제는 count5 미만일 때까지 반복하며 값을 출력합니다.

     

    4. break와 continue

    • break: 반복문을 즉시 종료합니다.
    • continue: 현재 반복을 건너뛰고 다음 반복으로 이동합니다.
    # break 사용 예시
    for i in range(10):
        if i == 5:
            break  # i가 5일 때 반복문 종료
        print(i)
    
    # continue 사용 예시
    for i in range(10):
        if i % 2 == 0:
            continue  # i가 짝수면 건너뜀
        print(i)  # 홀수만 출력

     

    5. 중첩 반복문
    반복문 안에 또 다른 반복문을 넣어 중첩 반복문을 작성할 수 있습니다.

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

    위 예제는 2차원 반복을 수행하며 ij의 조합을 출력합니다.

     

    6. 반복문과 else
    파이썬의 반복문에는 특이하게도 else를 사용할 수 있습니다. for 또는 while 반복문이 정상적으로 종료될 때 else 블록이 실행됩니다.

     
    for i in range(5):
        print(i)
    else:
        print("반복이 끝났습니다.")  # 반복이 정상 종료되면 실행

     

    3. 제어문 사용 시 주의할 점

    1. 무한 반복 주의
    while 반복문을 사용할 때 조건항상 참일 경우 무한 루프에 빠질 수 있습니다. 반복이 끝나는 조건을 명확히 설정하는 것이 중요합니다.

    # 잘못된 무한 루프 예시
    while True:
        print("무한 루프")  # 이 코드는 조건이 True이므로 무한히 실행됨

     

    2. 들여쓰기 중요성
    파이썬들여쓰기로 코드 블록을 구분하기 때문에 제어문을 사용할 때 들여쓰기가 매우 중요합니다. 잘못된 들여쓰기는 구문 오류(SyntaxError)를 발생시킬 수 있습니다.

    # 올바른 예시
    if age >= 18:
        print("성인입니다.")
    
    # 잘못된 예시 (들여쓰기 오류)
    if age >= 18:
    print("성인입니다.")  # 구문 오류 발생

     

    4. 조건문과 반복문을 함께 사용하기

    조건문과 반복문은 함께 사용되어 특정 조건에 따라 반복문이 동작하도록 만들 수 있습니다.

    for i in range(10):
        if i % 2 == 0:
            print(f"{i}는 짝수입니다.")  # 짝수인 경우에만 출력

     

    위 예제는 0부터 9까지의 숫자 중 짝수만 출력하는 방식으로 조건문반복문이 함께 사용되었습니다.

     

    5. QnA

    1. 조건문에서 여러 조건을 동시에 검사하려면 어떻게 하나요?
    여러 조건을 동시에 검사하려면 논리 연산자 and, or, not을 사용합니다.

    • and: 모든 조건이 참이어야 합니다.
    • or: 하나라도 참이면 됩니다.
    • not: 조건의 참/거짓을 반대로 만듭니다.
    age = 25
    gender = "female"
    if age >= 18 and gender == "female":
        print("성인 여성입니다.")

    위 코드에서는 나이가 18 이상이고 성별이 여성일 때만 참으로 판별됩니다.

     

    2. 조건문 안에 또 다른 조건문을 넣어도 되나요?
    네, 조건문 안에 또 다른 조건문을 넣을 수 있습니다. 이를 중첩 조건문이라고 하며, 복잡한 조건을 처리할 때 유용합니다.

    age = 20
    if age >= 18:
        print("성인입니다.")
        if age < 21:
            print("아직 음주가 불가합니다.")  # 중첩 조건문

     

    3. elif와 else if는 어떤 차이가 있나요?
    파이썬에서는 else if라는 구문 대신 elif를 사용합니다. elif는 여러 조건을 순차적으로 검사할 때 사용하며, 첫 번째 참인 조건에서 코드 블록이 실행되고 이후 조건은 검사하지 않습니다.

    score = 75
    if score >= 90:
        print("A")
    elif score >= 80:
        print("B")
    else:
        print("C")  # score가 90 이상이 아니고 80 이상도 아니면 실행

     

    4. for 반복문과 while 반복문 중 언제 어떤 것을 사용해야 하나요?

    • for 반복문은 주로 시퀀스(예: 리스트, 튜플, 문자열)를 순회하거나 반복 횟수가 정해져 있을 때 사용합니다.
    • while 반복문은 특정 조건인 동안 계속 반복해야 할 때 사용합니다. 조건이 언제까지 참일지 알기 어려운 상황에서 많이 사용됩니다.

     

    5. break와 continue의 차이는 무엇인가요?

    • break: 현재 반복문을 즉시 종료합니다.
    • continue: 현재 반복을 건너뛰고 다음 반복으로 이동합니다.
    for i in range(5):
        if i == 3:
            break  # 반복문 종료
        print(i)  # 출력: 0, 1, 2
    
    for i in range(5):
        if i == 3:
            continue  # i가 3일 때는 건너뜀
        print(i)  # 출력: 0, 1, 2, 4

     

    6. 반복문을 사용할 때 무한 루프를 피하려면 어떻게 해야 하나요?
    while 반복문을 사용할 때 무한 루프를 피하려면 조건이 언젠가는 거짓이 되어 반복이 종료되도록 해야 합니다. 예를 들어, 반복문 안에서 조건을 변경하거나 반복 횟수를 제한하는 등의 방식이 필요합니다.

    count = 0
    while count < 5:
        print(count)
        count += 1  # 조건을 변경하여 반복 종료

     

    7. for 반복문에서 반복을 건너뛰고 싶을 때는 어떻게 하나요?
    반복을 건너뛰고 다음 반복으로 넘어가고 싶을 때는 continue를 사용합니다. 특정 조건에서 해당 반복의 나머지 코드를 건너뛰고, 반복문 처음으로 돌아갑니다.

    for i in range(5):
        if i == 2:
            continue  # i가 2일 때는 건너뜀
        print(i)  # 출력: 0, 1, 3, 4

     

    8. 반복문 안에서 조건문을 사용하는 이유는 무엇인가요?
    반복문 안에서 조건문을 사용하면 반복 도중 특정 조건에 따라 다르게 동작하도록 제어할 수 있습니다. 예를 들어, 리스트의 특정 요소만 출력하거나 특정 조건에 맞는 작업만 수행하도록 할 수 있습니다.

    numbers = [1, 2, 3, 4, 5]
    for number in numbers:
        if number % 2 == 0:
            print(f"{number}는 짝수입니다.")  # 짝수인 경우만 출력

     

    9. 파이썬에서 else를 for나 while 반복문과 함께 사용하는 경우는 어떤 경우인가요?
    else는 for 또는 while 반복문이 정상적으로 종료될 때 실행됩니다. 만약 break에 의해 반복문이 중간에 종료되면 else 블록은 실행되지 않습니다.

    for i in range(5):
        if i == 6:
            break
    else:
        print("반복문이 정상 종료되었습니다.")  # i가 6이 될 일이 없으므로 출력됨

     

    10. 반복문에서 range() 함수는 어떻게 사용하나요?
    range() 함수는 반복문에서 반복 횟수를 지정할 때 많이 사용됩니다. 기본 형태는 range(start, stop, step)이며, 시작 값(start), 종료 값(stop), 증감 폭(step)을 지정할 수 있습니다.

    • range(5): 0부터 4까지의 숫자 생성
    • range(1, 10): 1부터 9까지의 숫자 생성
    • range(0, 10, 2): 0부터 9까지 2씩 증가하는 숫자 생성

     

    11. 반복문에서 여러 조건을 동시에 검사하려면 어떻게 해야 하나요?
    반복문 내에서 여러 조건을 동시에 검사하려면 논리 연산자 and, or를 사용합니다. 이를 통해 조건을 복합적으로 설정할 수 있습니다.

    for i in range(10):
        if i % 2 == 0 and i > 3:
            print(i)  # 짝수이면서 3보다 큰 숫자만 출력

     

    12. 조건문에서 in 키워드는 언제 사용하나요?
    in 키워드는 특정 값이 리스트, 문자열, 튜플 등에 포함되어 있는지 확인할 때 사용합니다.

    fruits = ["apple", "banana", "cherry"]
    if "banana" in fruits:
        print("바나나가 리스트에 포함되어 있습니다.")
     
     

    위 예제는 리스트에 "banana"가 포함되어 있는지 확인하고 참일 경우 출력합니다.

     

    13. while True를 사용하는 경우는 언제인가요?
    while True는 조건이 항상 이므로 무한 반복을 수행합니다. 일반적으로 사용자로부터 특정 입력을 받을 때나, 조건에 따라 명시적으로 반복을 종료하고 싶을 때 사용됩니다. break를 통해 특정 조건이 충족되면 반복을 종료합니다.

    while True:
        user_input = input("종료하려면 'exit'를 입력하세요: ")
        if user_input == 'exit':
            break
        print(f"입력한 값: {user_input}")

     

    14. 반복문에서 실행할 코드가 없는 경우 어떻게 처리하나요?
    반복문에서 실행할 코드가 없는 경우 pass를 사용할 수 있습니다. 이는 아무 작업도 하지 않고 넘어가는 플레이스홀더 역할을 합니다.

    for i in range(5):
        if i % 2 == 0:
            pass  # 아무 작업도 하지 않음
        else:
            print(i)  # 홀수만 출력

     

    15. 중첩된 반복문을 사용할 때 성능 저하를 막으려면 어떻게 해야 하나요?
    중첩된 반복문은 반복 횟수가 많아질수록 성능 저하를 유발할 수 있습니다. 이를 막기 위해 중첩된 반복문을 최소화하고, 가능한 경우 리스트 내포효율적인 자료 구조를 사용해 반복 횟수를 줄이는 것이 좋습니다. 데이터 처리량이 많은 경우에는 알고리즘을 최적화하거나 라이브러리 함수를 사용하는 것이 권장됩니다.

     


    파이썬 제어문은 프로그램의 흐름조건에 따라 제어하거나 반복적으로 동작하도록 만드는 중요한 도구입니다. 조건문을 사용해 특정 조건에 따라 다르게 동작하도록 하고, 반복문을 사용해 특정 작업을 여러 번 반복하게 할 수 있습니다. if, elif, else를 통해 다양한 조건을 설정하고, forwhile을 활용해 다양한 반복 작업을 수행해 보세요.

    제어문을 잘 활용하면 프로그램의 논리적 흐름을 이해하고 제어하는 데 큰 도움이 됩니다. 꾸준히 연습을 통해 제어문 사용에 익숙해지면 효율적이고 유연한 프로그램을 작성할 수 있을 것입니다.