Skip to Content
💻 코리아IT아카데미 신촌 - 프로그래밍 학습 자료

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)의 결과는?

  1. [2, 3, 4, 5, 6, 7, 8]
  2. [2, 3, 4, 5, 6, 7]
  3. [3, 4, 5, 6, 7, 8]
  4. [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()
  1. 0 1 1 2 2 3
  2. 0 1 1 2 2 3
  3. 0 1 0 1 0 1
  4. 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문의 차이점은?

  1. for문은 빠르고, while문은 느리다
  2. for문은 정해진 반복, while문은 조건부 반복
  3. for문은 숫자만, while문은 문자만 처리
  4. 차이점이 없다

💡 정답 확인

정답: 2번 (for문은 정해진 반복, while문은 조건부 반복)

for문은 주로 정해진 횟수나 컬렉션 순회에 사용하고, while문은 조건이 만족될 때까지 반복할 때 사용합니다.

✅ for 반복문 마스터 체크리스트

✅ for 반복문 마스터 체크리스트

🎉 Unit 3 완주!

for 반복문까지 학습하면서 조건문과 반복문의 모든 기본기를 완성했습니다!

🏆 Unit 3에서 배운 내용

  1. 조건문 (if, elif, else): 프로그램의 판단력
  2. 논리 연산자 (and, or, not): 복합 조건 처리
  3. while 반복문: 조건부 반복의 활용
  4. for 반복문: 정해진 반복과 순회

🚀 이제 할 수 있는 것들

  • 상황에 따라 다른 동작을 하는 프로그램
  • 복잡한 조건을 조합한 논리적 판단
  • 반복 작업을 자동화하는 효율적인 코드
  • 리스트와 문자열을 활용한 데이터 처리

축하합니다! 이제 진정한 프로그래밍의 기초를 모두 갖추셨습니다! 🎊

다음 단계에서는 자료구조를 배워서 다양한 데이터를 효율적으로 관리하고 조작하는 방법을 알아보겠습니다!

Last updated on