Files
python-examples/doc/05_flow_controls.md
2025-01-20 02:26:20 +09:00

6.0 KiB

흐름 제어

파이썬의 흐름 제어: 조건문과 반복문 파이썬의 흐름 제어는 프로그램의 실행 순서를 조절하여 다양한 작업을 수행할 수 있도록 해줍니다. 주로 조건문과 반복문을 사용하여 프로그램의 흐름을 제어합니다.

조건문

if, elif, else

  • if 문: 특정 조건이 참일 때만 코드 블록을 실행합니다.
  • elif 문: 여러 개의 조건을 검사할 때 사용하며, 앞선 if나 elif 조건이 거짓일 때만 실행됩니다.
  • else 문: 모든 조건이 거짓일 때 실행됩니다.

if문의 조건식 뒤에 콜론(:)을 붙이고 if 블록은 들여쓰기를 합니다.

if 조건식:
    실행문
if 조건식:
    실행문
else:
    실행문
if 조건식:
    실행문
elif 조건식:
    실행문
else:
    실행문
age = 20

if age >= 18:
    print("성인입니다.")
elif age >= 13:
    print("청소년입니다.")
else:
    print("어린이입니다.")

match case

파이썬 3.10 버전부터 도입된 match-case 문은 if-elif-else 문을 더욱 간결하고 가독성 있게 만들어주는 새로운 패턴 매칭 문법입니다. 다양한 값이나 패턴과 비교하여 코드 블록을 실행할 수 있으며, 특히 데이터 타입에 따른 분기 처리를 효율적으로 수행할 수 있습니다.

match value:
    case pattern1:
        # pattern1에 일치할 때 실행되는 코드
    case pattern2:
        # pattern2에 일치할 때 실행되는 코드
    case _:  # 기본 케이스
        # 위의 모든 패턴에 일치하지 않을 때 실행되는 코드
  • value: 비교할 값
  • pattern: 패턴 (리터럴, 변수, 가드(guard)를 포함할 수 있음)
  • _: 와일드카드 패턴 (모든 경우에 일치)
match (n):
    case 1: return 'One'
    case 2: return 'Two'
    case _: return 'Many'
case "a" | "b" : return "A or B"
case [time, name] : 
    return f"{time}, {name}!\n"
case [time, *names] : 
    msg = ''
    for name in names:
        msg += f"{time}, {name}!\n"
    return msg
case [item, amount] if amount < 1000:
    return amount * 1.2
case [item, amount] if amount >=1000:
    return amount * 1.5
def get_grade(score):
    match score:
        case 90 | 100:
            return "A"
        case 80 if score >= 85:
            return "B+"
        case 80:
            return "B"
        case _:
            return "C 이하"
  • 순서: 패턴은 위에서부터 아래로 순차적으로 검사되므로, 일반적으로 더 구체적인 패턴을 먼저 작성해야 합니다.
  • 가드: 가드는 패턴이 일치한 후에 추가적인 조건을 검사하는 역할을 합니다.
  • 와일드카드: 모든 경우에 일치하지만, 너무 남용하면 코드의 가독성이 떨어질 수 있습니다.

반복문

for in

시퀀스(리스트, 튜플, 문자열 등)의 요소를 순서대로 반복합니다.

for 변수 in range(횟수):
    실행문
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

range외에 리스트, 튜플, 문자열 등의 시퀀스 타입을 사용해도 됩니다.

a = [1, 2, 3, 4, 5]
for i in a:
    print(i)

for i in range(len(a)):
    print(a[i])

# 리스트의 인덱스도 필요한 때에는 enumerate()를 사용하면 됩니다.
for idx, val in enumerate(a):
    print(idx, val)

리스트 내포

for 문을 이용하여 간결하게 리스트를 생성하는 방법입니다.

numbers = [x**2 for x in range(10)]  # 0부터 9까지의 제곱수 리스트 생성

while

특정 조건이 참인 동안 반복합니다.

while 조건식:
    실행문
count = 0
while count < 5:
    print(count)
    count += 1

반복문에서의 else

파이썬의 반복문(for, while)에서 else 문은 일반적인 조건문의 else 문과는 다르게 동작합니다.

for 문에서 모든 요소를 순회했는지 확인하는 데 사용됩니다. 예를 들어, 리스트에서 특정 값을 찾는 경우, 찾지 못하면 else 블록에서 해당 메시지를 출력할 수 있습니다.

while 문에서는 조건이 만족되어 반복이 종료되었는지 확인하는 데 사용됩니다. 예를 들어, 파일에서 특정 데이터를 찾는 경우, 파일의 끝까지 검색했지만 찾지 못했다면 else 블록에서 에러 메시지를 출력할 수 있습니다.

반복문의 else가 실행되는 조건

  • for 문: for 문이 정상적으로 모든 요소를 순회한 후에 실행됩니다. 즉, break 문에 의해 중단되지 않고 모든 반복이 완료되어야 else 블록이 실행됩니다.
  • while 문: while 문의 조건이 거짓이 되어 반복이 자연스럽게 종료될 때 실행됩니다. 마찬가지로, break 문에 의해 중단되지 않아야 합니다.
numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num == 6:
        print("숫자 6을 찾았습니다.")
        break
else:
    print("숫자 6을 찾지 못했습니다.")
i = 0
while i < 5:
    print(i)
    i += 1
else:
    print("반복이 끝났습니다.")

break 문이 실행되면 else 블록은 실행되지 않습니다.

for 문이나 while 문이 정상적으로 종료될 때만 else 블록이 실행됩니다.

그 외

break

반복문을 즉시 종료합니다.

for i in range(10):
    if i == 5:
        break
    print(i)

continue

현재 반복을 건너뛰고 다음 반복으로 이동합니다.

for i in range(10):
    if i % 2 == 0:
        continue
    print(i)

pass

아무런 동작을 하지 않는 문장으로, 조건문이나 반복문에서 코드 블록이 필요하지만 아직 구현하지 않았을 때 사용합니다. Python의 들여쓰기 문법 때문에 사용되는 키워드입니다. 파이썬 3.x부터는 ...을 사용해도 됩니다.

for i in range(10):
    pass # 아무 것도 실행되지 않습니다.