[파이썬 100강] 04강. for문과 range로 반복 자동화하기
반복문은 "같은 작업을 여러 번 정확하게 실행"하게 해주는 자동화의 출발점입니다.
실무에서는 로그 처리, 파일 순회, API 응답 목록 가공, 대량 데이터 검증처럼 반복이 기본인 일이 훨씬 많습니다.
이번 강의에서는 for문과 range()를 통해 반복의 구조를 정확히 이해하고, 실수 없이 유지보수 가능한 코드를 작성하는 감각까지 함께 익히겠습니다.
핵심 개념
for문은 순회 가능한(iterable) 객체에서 값을 하나씩 꺼내며 블록을 실행합니다.
- 문자열: 글자 하나씩 순회
- 리스트/튜플: 요소 하나씩 순회
range(): 정수 시퀀스를 만들어 순회
range(start, stop, step)의 핵심 규칙은 다음 한 줄입니다.
start는 포함,stop은 미포함
>>> for i in range(1, 6):
... print(i)
...
1
2
3
4
5
위 예제에서 range(1, 6)은 1,2,3,4,5를 생성합니다. 6은 포함되지 않습니다. 이 규칙을 놓치면 반복 횟수 버그가 바로 생깁니다.
기본 사용
1) 가장 기본적인 반복: 리스트 순회
>>> menus = ["아메리카노", "라떼", "콜드브루"]
>>> for menu in menus:
... print(f"오늘의 추천: {menu}")
...
오늘의 추천: 아메리카노
오늘의 추천: 라떼
오늘의 추천: 콜드브루
인덱스를 직접 다루지 않아도 값을 안전하게 순회할 수 있습니다. 값 중심 반복이 기본, 인덱스가 필요할 때만 인덱스를 사용하세요.
2) range()로 횟수 제어
>>> total = 0
>>> for n in range(1, 11):
... total += n
...
>>> print("1~10 합계:", total)
1~10 합계: 55
반복 횟수가 명확할 때 for + range()는 가장 읽기 좋고 오류가 적습니다.
3) 실무형 예제: 주문 목록 합계 계산
>>> orders = [12000, 8500, 23000, 5400]
>>> total = 0
>>> for price in orders:
... total += price
...
>>> vat = int(total * 0.1)
>>> print(f"공급가 합계: {total}원")
>>> print(f"부가세(10%): {vat}원")
>>> print(f"최종 결제액: {total + vat}원")
공급가 합계: 48900원
부가세(10%): 4890원
최종 결제액: 53790원
반복문은 계산 자체보다도 일관성이 중요합니다. 사람이 수동 계산하면 실수하지만, 반복문은 같은 규칙을 끝까지 유지합니다.
4) 구간 점프: step 활용
>>> for hour in range(0, 24, 3):
... print(f"{hour:02d}:00 배치 작업 실행")
...
00:00 배치 작업 실행
03:00 배치 작업 실행
06:00 배치 작업 실행
09:00 배치 작업 실행
12:00 배치 작업 실행
15:00 배치 작업 실행
18:00 배치 작업 실행
21:00 배치 작업 실행
step은 "몇 칸씩 건너뛸지"를 명시합니다. 스케줄링, 샘플링, 묶음 처리에서 자주 쓰입니다.
자주 하는 실수
실수 1) range()의 끝값 포함 오해
>>> for i in range(1, 5):
... print(i)
...
1
2
3
4
"1부터 5까지"를 기대하면 틀립니다. 5까지 포함하려면 range(1, 6)을 써야 합니다.
실수 2) 반복 변수 재사용으로 값 덮어쓰기
>>> value = "초기값"
>>> for value in [1, 2, 3]:
... pass
...
>>> print(value)
3
반복 변수는 루프가 끝난 뒤에도 마지막 값을 유지합니다. 기존 변수명을 재사용하면 의도치 않게 값이 덮어써집니다.
실수 3) 인덱스가 필요 없는데 억지로 인덱스 사용
>>> fruits = ["apple", "banana", "orange"]
>>> for i in range(len(fruits)):
... print(fruits[i])
...
apple
banana
orange
동작은 하지만 가독성이 떨어집니다. 값만 필요하면 아래처럼 쓰는 편이 더 좋습니다.
>>> for fruit in fruits:
... print(fruit)
...
apple
banana
orange
오늘의 결론
for문은 단순히 "반복"이 아니라, 반복되는 업무를 안전하게 자동화하는 구조입니다.
오늘 꼭 기억할 포인트는 네 가지입니다.
for는 iterable에서 값을 하나씩 꺼낸다.range()는start포함,stop미포함이다.- 값 중심 순회가 기본이고, 인덱스는 꼭 필요할 때만 쓴다.
- 반복문은 계산의 정확도보다 "규칙의 일관성"을 보장하는 도구다.
이 감각을 잡으면 이후에 배울 while, 리스트 컴프리헨션, 파일 처리 반복도 훨씬 수월해집니다.
연습문제
range(1, 21)을 사용해서 1부터 20까지 숫자 중 짝수만 출력해보세요.prices = [1500, 3200, 7800, 2100]에서 총합과 평균을 계산해 출력해보세요.- 구구단 3단을
for문으로 출력해보세요. (예:3 x 1 = 3~3 x 9 = 27)
이전 강의 정답 (03강 연습문제)
- 점수 등급 분기 (90/80/70 기준)
>>> score = 87
>>> if score >= 90:
... grade = "A"
... elif score >= 80:
... grade = "B"
... elif score >= 70:
... grade = "C"
... else:
... grade = "D"
...
>>> print(grade)
B
- 구매금액 + VIP 여부로 배송비 계산
>>> amount = 34000
>>> is_vip = True
>>> if amount >= 50000:
... fee = 0
... elif is_vip and amount >= 30000:
... fee = 0
... else:
... fee = 3000
...
>>> print(f"배송비: {fee}원")
배송비: 0원
- 문자열 동의값 정규화 후 처리
>>> raw = " No "
>>> normalized = raw.strip().lower()
>>> if normalized in ("y", "yes"):
... print("동의")
... elif normalized in ("n", "no"):
... print("미동의")
... else:
... print("다시 입력해주세요")
...
미동의
실습 환경/재현 정보
- 실행 환경:
condaenvpython100(Python 3.11.14)