Topic 4: for 반복문 - 정해진 반복 🎯
🎯 학습 목표
for 반복문의 구조와 동작 원리를 이해하고, range 함수와 함께 사용하여 정해진 횟수만큼 반복하거나 리스트의 요소들을 순회할 수 있습니다.
🔄 for문 vs while문
while문의 한계
# while문으로 1부터 5까지 출력
i = 1
while i <= 5:
print(i)
i += 1 # 매번 변수 관리가 필요
for문의 장점
# for문으로 1부터 5까지 출력
for i in range(1, 6):
print(i) # 변수 관리가 자동!
for문은 정해진 횟수나 정해진 값들에 대해 반복할 때 더 간편합니다.
📊 range 함수
range 함수의 기본 형태
range(시작, 끝, 간격)
- 시작: 시작 숫자 (포함)
- 끝: 끝 숫자 (포함하지 않음!)
- 간격: 증가량 (생략 시 1)
range 사용법
1. range(끝)
# 0부터 4까지 (5는 포함하지 않음)
for i in range(5):
print(i)
# 출력: 0, 1, 2, 3, 4
2. range(시작, 끝)
# 1부터 5까지 (6은 포함하지 않음)
for i in range(1, 6):
print(i)
# 출력: 1, 2, 3, 4, 5
3. range(시작, 끝, 간격)
# 0부터 10까지 2씩 증가
for i in range(0, 11, 2):
print(i)
# 출력: 0, 2, 4, 6, 8, 10
4. 역순 range
# 5부터 1까지 감소
for i in range(5, 0, -1):
print(i)
# 출력: 5, 4, 3, 2, 1
🔢 for문 기본 활용
정해진 횟수 반복
# 인사를 5번 하기
for i in range(5):
print(f"{i+1}번째 안녕하세요!")
구구단 출력
# 3단 구구단
dan = 3
for i in range(1, 10):
result = dan * i
print(f"{dan} × {i} = {result}")
합계 계산
# 1부터 10까지의 합
total = 0
for i in range(1, 11):
total += i
print(f"1부터 10까지의 합: {total}")
팩토리얼 계산
# 5! 계산
n = 5
factorial = 1
for i in range(1, n + 1):
factorial *= i
print(f"{n}! = {factorial}")
📝 리스트 순회
리스트의 모든 요소 처리
# 과일 목록 출력
fruits = ["사과", "바나나", "오렌지", "포도"]
for fruit in fruits:
print(f"좋아하는 과일: {fruit}")
점수 처리
# 학생들의 점수 처리
scores = [85, 92, 78, 96, 88]
total = 0
for score in scores:
total += score
average = total / len(scores)
print(f"평균 점수: {average:.1f}")
조건부 처리
# 80점 이상인 점수만 출력
scores = [85, 92, 78, 96, 88, 73]
print("우수한 점수들:")
for score in scores:
if score >= 80:
print(score)
🔤 문자열 순회
문자열의 각 문자 처리
# 문자열의 각 문자 출력
word = "Python"
for char in word:
print(f"문자: {char}")
문자 개수 세기
# 모음 개수 세기
text = "Hello World"
vowels = "aeiouAEIOU"
vowel_count = 0
for char in text:
if char in vowels:
vowel_count += 1
print(f"모음의 개수: {vowel_count}")
🎯 중첩 for문
2차원 패턴 만들기
# 직사각형 별 패턴
for i in range(3): # 3줄
for j in range(5): # 각 줄에 5개
print("*", end="")
print() # 줄바꿈
구구단 전체 출력
# 2단부터 9단까지
for dan in range(2, 10):
print(f"\n{dan}단:")
for i in range(1, 10):
result = dan * i
print(f"{dan} × {i} = {result}")
좌표 생성
# 3×3 좌표 출력
for x in range(3):
for y in range(3):
print(f"({x}, {y})")
🛑 반복 제어: break와 continue
for문에서 break 사용
# 특정 값 찾으면 중단
numbers = [2, 4, 7, 8, 10]
for num in numbers:
if num == 7:
print("7을 찾았습니다!")
break
print(num)
# 출력: 2, 4, 7을 찾았습니다!
for문에서 continue 사용
# 짝수만 출력
for i in range(1, 11):
if i % 2 == 1: # 홀수이면
continue # 건너뛰기
print(i)
# 출력: 2, 4, 6, 8, 10
📊 실용적인 예시들
예시 1: 성적 등급 계산
# 여러 학생의 성적 등급 계산
scores = [95, 87, 76, 92, 83, 69]
grades = []
for score in scores:
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
elif score >= 60:
grade = "D"
else:
grade = "F"
grades.append(grade)
print(f"{score}점 → {grade}등급")
print(f"전체 등급: {grades}")
예시 2: 단어 길이 분석
# 단어들의 길이 분석
words = ["python", "java", "javascript", "c", "html"]
for word in words:
length = len(word)
if length <= 3:
category = "짧은 단어"
elif length <= 6:
category = "보통 단어"
else:
category = "긴 단어"
print(f"{word} ({length}글자): {category}")
예시 3: 숫자 패턴 생성
# 삼각형 숫자 패턴
for i in range(1, 6):
for j in range(1, i + 1):
print(j, end=" ")
print()
# 출력:
# 1
# 1 2
# 1 2 3
# 1 2 3 4
# 1 2 3 4 5
💡 for문 vs while문 선택 기준
for문을 사용하는 경우
- 정해진 횟수만큼 반복할 때
- 리스트, 문자열 등을 순회할 때
- range로 숫자 범위를 처리할 때
# for문이 적합
for i in range(10): # 10번 반복
print(i)
for name in ["김철수", "이영희"]: # 리스트 순회
print(name)
while문을 사용하는 경우
- 조건이 만족될 때까지 반복할 때
- 반복 횟수가 정해지지 않았을 때
- 사용자 입력에 따라 반복할 때
# while문이 적합
password = ""
while password != "1234": # 올바른 비밀번호까지
password = input("비밀번호: ")
count = 0
while count < 100: # 조건부 반복
count += some_calculation()
🚨 자주 발생하는 오류
오류 1: range 범위 실수
# ❌ 틀린 예 (1부터 5까지 출력하려고 했지만...)
for i in range(1, 5):
print(i)
# 출력: 1, 2, 3, 4 (5가 빠짐!)
# ✅ 올바른 예
for i in range(1, 6): # 끝값은 포함되지 않으므로 6
print(i)
# 출력: 1, 2, 3, 4, 5
오류 2: 리스트 수정 중 순회
# ❌ 위험한 예
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num % 2 == 0:
numbers.remove(num) # 반복 중 리스트 수정은 위험!
# ✅ 안전한 방법
numbers = [1, 2, 3, 4, 5]
odd_numbers = []
for num in numbers:
if num % 2 == 1:
odd_numbers.append(num)
오류 3: 변수명 혼동
# ❌ 헷갈리는 예
for i in range(3):
for i in range(2): # 같은 변수명 사용!
print(i)
# ✅ 명확한 예
for i in range(3):
for j in range(2): # 다른 변수명 사용
print(f"i={i}, j={j}")
💡 퀴즈: for문 이해도 체크
Q1. range(2, 8)의 결과는?
- [2, 3, 4, 5, 6, 7, 8]
- [2, 3, 4, 5, 6, 7]
- [3, 4, 5, 6, 7, 8]
- [2, 4, 6, 8]
💡 정답 확인
정답: 2번 ([2, 3, 4, 5, 6, 7])
range(2, 8)은 2부터 시작해서 8 미만까지이므로 2, 3, 4, 5, 6, 7이 생성됩니다.
Q2. 다음 코드의 출력 결과는?
for i in range(3):
for j in range(2):
print(i + j, end=" ")
print()
- 0 1 1 2 2 3
- 0 1 1 2 2 3
- 0 1 0 1 0 1
- 1 2 2 3 3 4
💡 정답 확인
정답: 2번
외부 루프의 i가 0,1,2로 변하고, 내부 루프의 j가 0,1로 변하면서:
- i=0일 때: 0+0=0, 0+1=1
- i=1일 때: 1+0=1, 1+1=2
- i=2일 때: 2+0=2, 2+1=3
Q3. for문과 while문의 차이점은?
- for문은 빠르고, while문은 느리다
- for문은 정해진 반복, while문은 조건부 반복
- for문은 숫자만, while문은 문자만 처리
- 차이점이 없다
💡 정답 확인
정답: 2번 (for문은 정해진 반복, while문은 조건부 반복)
for문은 주로 정해진 횟수나 컬렉션 순회에 사용하고, while문은 조건이 만족될 때까지 반복할 때 사용합니다.
✅ for 반복문 마스터 체크리스트
✅ for 반복문 마스터 체크리스트
🎉 Unit 3 완주!
for 반복문까지 학습하면서 조건문과 반복문의 모든 기본기를 완성했습니다!
🏆 Unit 3에서 배운 내용
- 조건문 (if, elif, else): 프로그램의 판단력
- 논리 연산자 (and, or, not): 복합 조건 처리
- while 반복문: 조건부 반복의 활용
- for 반복문: 정해진 반복과 순회
🚀 이제 할 수 있는 것들
- 상황에 따라 다른 동작을 하는 프로그램
- 복잡한 조건을 조합한 논리적 판단
- 반복 작업을 자동화하는 효율적인 코드
- 리스트와 문자열을 활용한 데이터 처리
축하합니다! 이제 진정한 프로그래밍의 기초를 모두 갖추셨습니다! 🎊
다음 단계에서는 자료구조를 배워서 다양한 데이터를 효율적으로 관리하고 조작하는 방법을 알아보겠습니다!
Last updated on