파이썬 - 루프: 효율적 프로그래밍의 열쇠
안녕하세요, 자라고 있는 프로그래머 여러분! 오늘은 파이썬에서 가장 강력한 개념 중 하나인 루프에 대해 다룰 거예요. 여러분의 친절한 이웃 컴퓨터 과학 교사로서 저는 이 여정을 안내해 드리게 되어 기쁩니다. 믿어 주세요, 루프를 마스터하면 코드에서 슈퍼파워를 잠재울 것 같은 느낌을 받게 될 거예요!
루프란 무엇인가요? 왜 필요한가요?
"Hello, World!"를 100번 출력하도록 프로그램을 작성하라는 과제를 받았을 때를 상상해 봅시다. 루프 없이는 같은 코드를 100번 써야 합니다! 그건 단순히 지루하지만, 비효율적입니다. 이때 루프가 구조를 나타냅니다.
루프는 우리가 코드 블록을 반복적으로 실행할 수 있게 해줍니다. 그들은 코드의 토끼를 돌림차처럼 빙빙 돌며 특정 조건이 만족될 때까지 계속됩니다.
루프의 흐름도
코드를 탐구하기 전에 루프가 어떻게 작동하는지 시각화해 봅시다:
[시작]
|
v
[초기화 카운터]
|
v
[조건 확인]
|
[참] [거짓]
| |
v v
[코드 실행] [루프 종료]
|
v
[카운터 업데이트]
|
'--------^
이 흐름도는 대부분의 루프의 기본 구조를 나타냅니다. 우리는 카운터를 설정하고, 조건을 확인하고, 조건이 참이면 코드를 실행하고, 카운터를 업데이트한 후 다시 조건을 확인합니다. 이 사이클은 조건이 거짓이 되기 전까지 계속됩니다.
파이썬의 루프 유형
파이썬은 두 가지 주요 유형의 루프를 제공합니다: for
루프와 while
루프입니다. 각각을 몇 가지 재미있는 예제와 함께 탐구해 봅시다!
1. For 루프
for
루프는 우리가 미리 알고 있는 만큼 코드 블록을 실행하고 싶을 때 사용됩니다. "이 작업을 X번 수행해"라고 코드에게 말하는 것과 같습니다.
기본 문법:
for item in sequence:
# 실행할 코드
예제 1: 양을 세는 루프
for sheep in range(5):
print(f"양을 {sheep + 1}번째로 세는 중")
# 출력:
# 양을 1번째로 세는 중
# 양을 2번째로 세는 중
# 양을 3번째로 세는 중
# 양을 4번째로 세는 중
# 양을 5번째로 세는 중
이 예제에서는 for
루프를 사용하여 양을 세고 있습니다. range(5)
함수는 0에서 4까지의 숫자 시퀀스를 만들고, 우리의 루프는 이 수의 각각을 반복합니다. 출력할 때 sheep
에 1을 더해주는 이유는 range(5)
가 0에서 시작하지만, 우리는 1부터 세고 싶기 때문입니다.
예제 2: 리스트를 이터레이션
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(f"{fruit}s를 먹는 것을 좋아해!")
# 출력:
# apples를 먹는 것을 좋아해!
# bananas를 먹는 것을 좋아해!
# cherrys를 먹는 것을 좋아해!
여기서는 과일 목록을 순회하며 각 과일에 대해 좋아하는 과일을 먹는 것에 대해 인사를 출력합니다. 파이썬은 자동으로 목록의 각 항목을 루프의 각 반복에서 fruit
변수에 할당합니다.
2. While 루프
while
루프는 특정 조건이 참인 동안 코드 블록을 반복하고 싶을 때 사용됩니다. "멈추게 되면 그만"이라고 말하는 것과 같습니다.
기본 문법:
while condition:
# 실행할 코드
예제 3: 불평등한 웨이터
order_ready = False
waiting_time = 0
while not order_ready:
waiting_time += 1
print(f"{waiting_time}분 대기 중...")
if waiting_time >= 5:
order_ready = True
print("주문 준비 완료!")
# 출력:
# 1분 대기 중...
# 2분 대기 중...
# 3분 대기 중...
# 4분 대기 중...
# 5분 대기 중...
# 주문 준비 완료!
이 예제에서는 식당에서 주문을 기다리는 것을 시뮬레이션합니다. 루프는 order_ready
가 False
인 동안 계속됩니다. 각 반복에서 waiting_time
은 1분씩 증가합니다. 5분이 지나면 order_ready
를 True
로 설정하여 루프를 종료합니다.
파이썬 루프 제어 문
때로는 루프에 더 많은 제어를 필요로 합니다. 파이썬은 세 가지 루프 제어 문을 제공합니다:
문 | 설명 |
---|---|
break |
루프를 일찍 종료 |
continue |
현재 반복의 나머지를 건너뛰고 다음 반복으로 이동 |
pass |
아무것도 하지 않고, 자리 표시자 역할 |
이제 이들을 동작에서 볼까요!
예제 4: 나쁜 습관을 고치기
bad_habits = ["procrastination", "oversleeping", "junk food", "too much TV"]
days_clean = 0
for habit in bad_habits:
if habit == "junk food":
print(f"{habit}을(를) 절대 참을 수 없어! 스타일을 끊어.")
break
days_clean += 1
print(f"{habit}을(를) {days_clean}일 동안 피해왔어!")
print(f"좋은 습관을 지속한 총 일수: {days_clean}")
# 출력:
# procrastination을 1일 동안 피해왔어!
# oversleeping을 2일 동안 피해왔어!
# junk food을 절대 참을 수 없어! 스타일을 끊어.
# 좋은 습관을 지속한 총 일수: 2
이 예제에서는 break
문을 사용하여 "junk food"를 만나면 루프를 일찍 종료합니다. 이는 좋은 습관의 연속성을 끊는 것을 시뮬레이션합니다.
예제 5: 채소를 건너뛰기
foods = ["pizza", "broccoli", "burger", "spinach", "ice cream"]
print("엄마가 내가 피자판에 있는 거 다 먹어야 한다고 하지만...")
for food in foods:
if food in ["broccoli", "spinach"]:
print(f"이런! {food}을(를) 실수로 바닥에 떨어뜨렸어!")
continue
print(f"{food}을(를) 먹는 중!")
# 출력:
# 엄마가 내가 피자판에 있는 거 다 먹어야 한다고 하지만...
# pizza를 먹는 중!
# 이런! broccoli를 실수로 바닥에 떨어뜨렸어!
# burger를 먹는 중!
# 이런! spinach를 실수로 바닥에 떨어뜨렸어!
# ice cream를 먹는 중!
여기서는 continue
를 사용하여 피자판에 있는 채소를 건너뜁니다. broccoli나 spinach를 만나면 장난을 치고 다음 반복으로 이동합니다.
결론
축하합니다! 파이썬 여정에서 루프를 마스터하는 걸로 거대한 발자취를 내딛었습니다. 기억하세요, 연습이 첫째입니다. 이 개념들을 실험해 보세요, 서로 다른 유형을 섞어 보세요, 그리고 무엇을 만들 수 있는지 확인해 보세요.
루프는 노래의 비트처럼 코드를 움직이고 신나게 만듭니다. 그래서 계속 코딩하고, 루프를 돌리고, 가장 중요한 것은 즐기는 걸로 해요!
코딩을 즐기는 미래의 파이썬 마스터 여러분, 화이팅!
Credits: Image by storyset