반복 작업을 자동화하는 마법! 😊 for문은 프로그래머의 필수 무기입니다. “100명의 학생 성적 처리”, “1000개의 파일 이름 변경”, “게임에서 모든 적 이동” 같은 반복 작업을 코드 한 줄로 해결할 수 있습니다. 복사-붙여넣기는 이제 그만! 진짜 프로그래밍의 시작입니다.
(15분 완독 ⭐⭐)
🎯 오늘의 학습 목표
📚 사전 지식
🎯 학습 목표 1: for문이 무엇인지 이해하기
한 줄 설명
for문 = 반복 작업을 자동으로 해주는 명령
똑같은 일을 여러 번 할 때 사용합니다.
왜 필요한가요?
1
2
3
4
5
6
7
8
9
10
11
12
| # ❌ 반복문 없이 (비효율적)
fruits = ["사과", "바나나", "포도", "딸기", "수박"]
print(fruits[0])
print(fruits[1])
print(fruits[2])
print(fruits[3])
print(fruits[4])
# ✅ for문 사용 (효율적)
fruits = ["사과", "바나나", "포도", "딸기", "수박"]
for fruit in fruits:
print(fruit)
|
🎯 학습 목표 2: for문으로 리스트 순회하기
문법
1
2
| for 변수 in 리스트:
실행할 코드
|
💡 중요: 콜론(:)과 들여쓰기(4칸 또는 Tab) 필수!
첫 for문 작성
1
2
3
4
| fruits = ["사과", "바나나", "포도"]
for fruit in fruits:
print(fruit)
|
출력:
동작 원리
1
2
3
4
5
6
7
8
| fruits = ["사과", "바나나", "포도"]
for fruit in fruits:
print(f"현재: {fruit}")
# 1회전: fruit = "사과"
# 2회전: fruit = "바나나"
# 3회전: fruit = "포도"
|
출력:
1
2
3
| 현재: 사과
현재: 바나나
현재: 포도
|
🎯 학습 목표 3: range()로 숫자 범위 만들기
range() 기본 문법
1
2
3
| # 0부터 4까지 (5는 제외!)
for i in range(5):
print(i)
|
출력:
💡 중요: range(5)는 0부터 4까지! 총 5개의 숫자
range() 3가지 사용법
1
2
3
4
5
6
7
8
9
10
11
| # 1. range(끝) - 0부터 끝-1까지
for i in range(3):
print(i) # 0, 1, 2
# 2. range(시작, 끝) - 시작부터 끝-1까지
for i in range(2, 5):
print(i) # 2, 3, 4
# 3. range(시작, 끝, 간격)
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8 (짝수만)
|
거꾸로 세기 (역순)
1
2
3
| # 5부터 1까지
for i in range(5, 0, -1):
print(i)
|
출력:
예제 1: 구구단
1
2
3
4
5
6
| # 2단 출력
dan = 2
for i in range(1, 10):
result = dan * i
print(f"{dan} × {i} = {result}")
|
출력:
1
2
3
4
5
| 2 × 1 = 2
2 × 2 = 4
2 × 3 = 6
...
2 × 9 = 18
|
예제 2: 리스트 합계
1
2
3
4
5
6
7
| numbers = [10, 20, 30, 40, 50]
total = 0
for number in numbers:
total = total + number
print(f"합계: {total}")
|
출력:
예제 3: 카운트다운
1
2
3
4
5
6
| print("카운트다운 시작!")
for i in range(5, 0, -1):
print(i)
print("발사! 🚀")
|
출력:
1
2
3
4
5
6
7
| 카운트다운 시작!
5
4
3
2
1
발사! 🚀
|
🎯 학습 목표 4: enumerate()와 중첩 for문 활용하기
enumerate() - 인덱스와 값 동시 사용
1
2
3
4
| fruits = ["사과", "바나나", "포도"]
for index, fruit in enumerate(fruits):
print(f"{index}번: {fruit}")
|
출력:
1
2
3
| 0번: 사과
1번: 바나나
2번: 포도
|
1부터 시작하기
1
2
3
4
| fruits = ["사과", "바나나", "포도"]
for index, fruit in enumerate(fruits, start=1):
print(f"{index}번: {fruit}")
|
출력:
1
2
3
| 1번: 사과
2번: 바나나
3번: 포도
|
중첩 for문 - for 안에 for
1
2
3
4
5
| # 2단부터 4단까지
for dan in range(2, 5):
print(f"\n=== {dan}단 ===")
for i in range(1, 10):
print(f"{dan} × {i} = {dan * i}")
|
출력:
1
2
3
4
5
6
7
8
| === 2단 ===
2 × 1 = 2
2 × 2 = 4
...
=== 3단 ===
3 × 1 = 3
...
|
별 찍기
1
2
3
| # 삼각형 만들기
for i in range(1, 6):
print("★" * i)
|
출력:
1
2
3
4
5
| ★
★★
★★★
★★★★
★★★★★
|
🎯 학습 목표 5: break와 continue로 반복 제어하기
break - 반복 즉시 중단
1
2
3
4
5
6
7
8
| # 5를 찾으면 멈추기
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for num in numbers:
if num == 5:
print("5를 찾았습니다!")
break
print(num)
|
출력:
1
2
3
4
5
| 1
2
3
4
5를 찾았습니다!
|
continue - 현재 반복 건너뛰기
1
2
3
4
5
| # 짝수만 출력
for i in range(1, 11):
if i % 2 == 1: # 홀수면
continue # 건너뛰기
print(i)
|
출력:
🎯 학습 목표 6: for문 실전 활용 패턴 익히기
패턴 1: 리스트 만들기
1
2
3
4
5
6
7
8
| # 1부터 10까지의 제곱 리스트
squares = []
for i in range(1, 11):
squares.append(i ** 2)
print(squares)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
|
패턴 2: 조건부 처리
1
2
3
4
5
6
7
| # 80점 이상만 출력
scores = [95, 78, 88, 65, 92, 73]
print("80점 이상 학생:")
for score in scores:
if score >= 80:
print(f"{score}점")
|
출력:
1
2
3
4
| 80점 이상 학생:
95점
88점
92점
|
패턴 3: 문자열 순회
1
2
3
4
| text = "Python"
for char in text:
print(char)
|
출력:
패턴 4: 최댓값/최솟값 찾기
1
2
3
4
5
6
7
8
9
| numbers = [45, 23, 78, 56, 92, 34]
max_value = numbers[0] # 첫 번째 값으로 시작
for num in numbers:
if num > max_value:
max_value = num
print(f"최댓값: {max_value}")
|
출력:
💻 실전 예제
예제 1: 다이아몬드 패턴 출력
1
2
3
4
5
6
| # 다이아몬드 만들기
for i in range(1, 6):
print(" " * (5 - i) + "★" * (2 * i - 1))
for i in range(4, 0, -1):
print(" " * (5 - i) + "★" * (2 * i - 1))
|
출력:
1
2
3
4
5
6
7
8
9
| ★
★★★
★★★★★
★★★★★★★
★★★★★★★★★
★★★★★★★
★★★★★
★★★
★
|
예제 2: 소수 찾기
1
2
3
4
5
6
7
8
9
10
11
12
13
| # 2부터 20까지 소수 찾기
print("2부터 20까지의 소수:")
for num in range(2, 21):
is_prime = True
for i in range(2, num):
if num % i == 0:
is_prime = False
break
if is_prime:
print(num, end=" ")
|
출력:
1
2
| 2부터 20까지의 소수:
2 3 5 7 11 13 17 19
|
💡 실전 팁 & 주의사항
💡 Tip 1: for문은 자동 종료되어 안전
1
2
3
4
| # ✅ for문은 리스트 끝에 도달하면 자동 종료
# while문과 달리 무한 루프 걱정 없음!
for i in range(100000):
print(i) # 100000번 반복 후 자동 종료
|
💡 Tip 2: 반복 중 리스트 수정 주의
1
2
3
4
5
6
7
8
9
| # ❌ 위험한 방법 (반복 중 리스트 수정)
numbers = [1, 2, 3, 4, 5]
for num in numbers:
numbers.remove(num) # 예상치 못한 결과!
# ✅ 안전한 방법 (복사본 사용)
numbers = [1, 2, 3, 4, 5]
for num in numbers.copy():
numbers.remove(num)
|
💡 Tip 3: 들여쓰기 필수
1
2
3
4
5
6
7
| # ❌ 잘못된 예
for i in range(3):
print(i) # IndentationError!
# ✅ 올바른 예
for i in range(3):
print(i)
|
💡 Tip 4: range() 끝 값 제외
range(5)가 왜 0~4까지일까요?
1
2
3
4
5
6
| # range(n)은 0부터 n-1까지
print(list(range(5))) # [0, 1, 2, 3, 4]
# 💡 총 5개 숫자 → range(5)로 5번 반복!
for i in range(5):
print(i) # 5번 반복됨
|
💡 Tip 5: 의미 있는 변수명 사용
1
2
3
4
5
6
7
| # ❌ 나쁜 예
for i in fruits: # fruits인데 i?
print(i)
# ✅ 좋은 예
for fruit in fruits: # 의미 있는 이름
print(fruit)
|
💡 Tip 6: enumerate()로 인덱스와 값 동시 활용
1
2
3
4
5
6
7
8
| # ❌ 복잡한 방법
fruits = ["사과", "바나나", "포도"]
for i in range(len(fruits)):
print(f"{i}: {fruits[i]}")
# ✅ 간결한 방법
for i, fruit in enumerate(fruits):
print(f"{i}: {fruit}")
|
🧪 연습 문제
문제 1: 팩토리얼 계산
5! (5 팩토리얼 = 5 × 4 × 3 × 2 × 1)을 계산하세요.
💡 힌트
✅ 정답
1
2
3
4
5
6
7
8
| n = 5
result = 1
for i in range(1, n + 1):
result = result * i
print(f"{n}! = {result}")
# 5! = 120
|
문제 2: 피라미드 만들기
숫자로 된 피라미드를 만드세요.
✅ 정답
1
2
3
4
5
6
7
8
9
10
| for i in range(1, 6):
# 공백 출력
for j in range(5 - i):
print(" ", end="")
# 숫자 출력
for j in range(1, i + 1):
print(j, end="")
print() # 줄바꿈
|
출력:
1
2
3
4
5
| 1
12
123
1234
12345
|
문제 3: 특정 문자 개수 세기
문자열에서 ‘a’의 개수를 세세요.
✅ 정답
1
2
3
4
5
6
7
8
9
| text = "banana"
count = 0
for char in text:
if char == 'a':
count += 1
print(f"'a'의 개수: {count}")
# 'a'의 개수: 3
|
📝 오늘 배운 내용 정리
- for문: 반복 작업 자동화
- range(): 숫자 범위 생성
- enumerate(): 인덱스와 값 함께 사용
- break: 반복 중단
- continue: 다음 반복으로 건너뛰기
- 중첩 for문: 반복문 안에 반복문
🎯 실습 과제
과제: 성적 처리 프로그램
학생들의 점수 리스트에서:
- 모든 점수 출력
- 평균 계산
- 80점 이상 개수 세기
- 최고점 찾기
예시:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| scores = [85, 92, 78, 95, 88, 73, 90]
# 1. 모든 점수 출력
print("전체 점수:")
for score in scores:
print(score, end=" ")
print()
# 2. 평균
total = 0
for score in scores:
total += score
average = total / len(scores)
print(f"평균: {average:.1f}")
# 3. 80점 이상
count = 0
for score in scores:
if score >= 80:
count += 1
print(f"80점 이상: {count}명")
# 4. 최고점
max_score = scores[0]
for score in scores:
if score > max_score:
max_score = score
print(f"최고점: {max_score}")
|
🔗 관련 자료
📚 이전 학습
Day 8: 조건문 if ⭐
어제는 if, elif, else로 조건에 따라 다른 코드를 실행하는 방법을 배웠습니다!
📚 다음 학습
Day 10: 미니 프로젝트 - 숫자 맞추기 게임 ⭐⭐⭐
내일은 지금까지 배운 내용을 모두 활용해서 재미있는 게임을 만듭니다!
“늦었다고 생각할 때가 가장 빠른 시기입니다!” 🚀
| Day 9/100 | Phase 1: Python 시작하기 | #100DaysOfPython |