파이썬 - 루프: 효율적 프로그래밍의 열쇠

안녕하세요, 자라고 있는 프로그래머 여러분! 오늘은 파이썬에서 가장 강력한 개념 중 하나인 루프에 대해 다룰 거예요. 여러분의 친절한 이웃 컴퓨터 과학 교사로서 저는 이 여정을 안내해 드리게 되어 기쁩니다. 믿어 주세요, 루프를 마스터하면 코드에서 슈퍼파워를 잠재울 것 같은 느낌을 받게 될 거예요!

Python - Loops

루프란 무엇인가요? 왜 필요한가요?

"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_readyFalse인 동안 계속됩니다. 각 반복에서 waiting_time은 1분씩 증가합니다. 5분이 지나면 order_readyTrue로 설정하여 루프를 종료합니다.

파이썬 루프 제어 문

때로는 루프에 더 많은 제어를 필요로 합니다. 파이썬은 세 가지 루프 제어 문을 제공합니다:

설명
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