파이썬 / / 2025. 5. 27. 22:27

11. 파이썬 반복문 완전 정복 - for문 기초부터 응용까지

반응형

파이썬-for문-기초-고급

 

 

반복문이란 무엇인가요?

반복문은 같은 작업을 여러 번 수행해야 할 때 사용하는 프로그래밍 도구입니다. 파이썬에서 가장 많이 사용하는 반복문이 바로 for문입니다. for문은 코드를 간결하고 읽기 쉽게 만들어 주는 파이썬의 대표적인 특징 중 하나입니다.

 

 


 

for문의 기본 문법

for문의 기본 구조는 다음과 같습니다:

for 변수명 in 데이터_모음:
    실행할_코드1
    실행할_코드2
    ...

여기서 '데이터_모음'은 리스트, 튜플, 문자열 등이 될 수 있습니다. 데이터 모음의 각 요소가 순서대로 변수에 저장되면서 아래의 코드들이 실행됩니다.

 


 

기본적인 for문 예제

 

 

1. 리스트와 함께 사용하기

# 과일 이름들을 담은 리스트
fruits = ['사과', '바나나', '딸기']

# 각 과일을 하나씩 출력하기
for fruit in fruits:
    print(f"맛있는 {fruit}!")

실행 결과:

맛있는 사과!
맛있는 바나나!
맛있는 딸기!

이 코드에서는 fruits 리스트의 각 요소('사과', '바나나', '딸기')가 순서대로 fruit 변수에 저장되면서 print문이 실행됩니다.

 

 

2. 문자열과 함께 사용하기

# 문자열의 각 글자를 하나씩 출력
word = "안녕하세요"

for letter in word:
    print(f"글자: {letter}")

실행 결과:

글자: 안
글자: 녕
글자: 하
글자: 세
글자: 요

 

 

3. 튜플과 함께 사용하기

# 좌표를 나타내는 튜플들의 리스트
coordinates = [(1, 2), (3, 4), (5, 6)]

# 각 좌표의 x, y 값을 분리해서 처리
for x, y in coordinates:
    print(f"x좌표: {x}, y좌표: {y}, 합계: {x + y}")

실행 결과:

x좌표: 1, y좌표: 2, 합계: 3
x좌표: 3, y좌표: 4, 합계: 7
x좌표: 5, y좌표: 6, 합계: 11

 

for문의 실용적인 활용 예제

 

 

학생 성적 처리 프로그램

# 학생들의 시험 점수
scores = [85, 45, 92, 38, 76]

# 각 학생의 합격/불합격 판정 (60점 이상 합격)
student_number = 0  # 학생 번호를 매기기 위한 변수

for score in scores:
    student_number = student_number + 1  # 학생 번호 증가
    
    if score >= 60:  # 60점 이상이면 합격
        print(f"{student_number}번 학생: {score}점 - 합격!")
    else:  # 60점 미만이면 불합격
        print(f"{student_number}번 학생: {score}점 - 불합격")

실행 결과:

1번 학생: 85점 - 합격!
2번 학생: 45점 - 불합격
3번 학생: 92점 - 합격!
4번 학생: 38점 - 불합격
5번 학생: 76점 - 합격!

 

continue문과 함께 사용하기

continue문을 사용하면 특정 조건에서 아래 코드를 건너뛰고 다음 반복으로 넘어갈 수 있습니다.

# 합격한 학생들에게만 축하 메시지 보내기
scores = [85, 45, 92, 38, 76]
student_number = 0

for score in scores:
    student_number = student_number + 1
    
    if score < 60:  # 불합격인 경우
        continue  # 아래 코드를 실행하지 않고 다음 반복으로
    
    # 합격한 학생들만 여기 코드가 실행됨
    print(f"{student_number}번 학생, 축하합니다! {score}점으로 합격하셨습니다.")

실행 결과:

1번 학생, 축하합니다! 85점으로 합격하셨습니다.
3번 학생, 축하합니다! 92점으로 합격하셨습니다.
5번 학생, 축하합니다! 76점으로 합격하셨습니다.

 

range 함수와 함께 사용하기

range 함수는 숫자의 범위를 만들어주는 함수로, for문과 함께 자주 사용됩니다.

 

 

기본 range 사용법

# 0부터 4까지 출력
for i in range(5):
    print(f"숫자: {i}")

실행 결과:

숫자: 0
숫자: 1
숫자: 2
숫자: 3
숫자: 4

 

 

시작과 끝 숫자 지정하기

# 1부터 10까지 출력
for i in range(1, 11):
    print(f"숫자: {i}")

 

 

숫자 더하기 예제

# 1부터 100까지의 합 계산하기
total = 0  # 합계를 저장할 변수

for i in range(1, 101):  # 1부터 100까지
    total = total + i  # 각 숫자를 total에 더하기

print(f"1부터 100까지의 합: {total}")

실행 결과:

1부터 100까지의 합: 5050

 

 

range와 리스트 인덱스 활용하기

# 과일 리스트와 인덱스 번호 함께 출력
fruits = ['사과', '바나나', '딸기', '포도', '오렌지']

for i in range(len(fruits)):  # len(fruits)는 리스트의 길이(5)
    print(f"{i+1}번째 과일: {fruits[i]}")

실행 결과:

1번째 과일: 사과
2번째 과일: 바나나
3번째 과일: 딸기
4번째 과일: 포도
5번째 과일: 오렌지

 

중첩 for문 사용하기

for문 안에 또 다른 for문을 넣어서 사용할 수 있습니다. 이를 중첩 for문이라고 합니다.

 

 

구구단 만들기

# 2단부터 9단까지 구구단 출력
for dan in range(2, 10):  # 2부터 9까지 (단)
    print(f"\n{dan}단:")  # 단 제목 출력
    
    for num in range(1, 10):  # 1부터 9까지 (곱할 수)
        result = dan * num  # 계산 결과
        print(f"{dan} × {num} = {result}")

실행 결과:

2단:
2 × 1 = 2
2 × 2 = 4
2 × 3 = 6
...

3단:
3 × 1 = 3
3 × 2 = 6
3 × 3 = 9
...

 

 

별 찍기 패턴

# 삼각형 별 패턴 만들기
for i in range(1, 6):  # 1부터 5까지 (줄 수)
    for j in range(i):  # 각 줄마다 i개의 별
        print("*", end="")  # 줄바꿈 없이 별 출력
    print()  # 한 줄 완성 후 줄바꿈

실행 결과:

*
**
***
****
*****

 

리스트 컴프리헨션 - 간단한 리스트 만들기

리스트 컴프리헨션은 for문을 사용해서 새로운 리스트를 만드는 간단한 방법입니다.

 

 

기본 사용법

# 1부터 10까지 숫자의 제곱 리스트 만들기

# 일반적인 방법
squares = []
for i in range(1, 11):
    squares.append(i * i)
print("일반 방법:", squares)

# 리스트 컴프리헨션 방법
squares_comp = [i * i for i in range(1, 11)]
print("컴프리헨션:", squares_comp)

실행 결과:

일반 방법: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
컴프리헨션: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

 

 

조건을 포함한 리스트 컴프리헨션

# 1부터 20까지 숫자 중 짝수만 골라서 2배 하기
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 짝수만 골라서 2배 하기
even_doubled = [num * 2 for num in numbers if num % 2 == 0]
print("짝수를 2배한 결과:", even_doubled)

# 홀수만 골라서 제곱하기
odd_squared = [num * num for num in numbers if num % 2 == 1]
print("홀수를 제곱한 결과:", odd_squared)

실행 결과:

짝수를 2배한 결과: [4, 8, 12, 16, 20]
홀수를 제곱한 결과: [1, 9, 25, 49, 81]

 

실용적인 예제들

 

 

1. 단어 길이 세기

# 문장에서 각 단어의 길이 계산
sentence = ["파이썬", "프로그래밍", "재미있어요", "열심히", "공부해요"]

for word in sentence:
    length = len(word)  # 단어의 길이 계산
    print(f"'{word}'의 길이: {length}글자")

 

 

2. 쇼핑 목록과 가격 계산

# 쇼핑 목록과 가격 (튜플로 구성)
shopping_list = [
    ("사과", 3000),
    ("바나나", 2000),
    ("우유", 2500),
    ("빵", 1500)
]

total_price = 0  # 총 가격

print("=== 쇼핑 목록 ===")
for item, price in shopping_list:
    print(f"{item}: {price}원")
    total_price = total_price + price  # 총 가격에 추가

print(f"\n총 가격: {total_price}원")

 

 

3. 숫자 맞추기 게임 점수 계산

# 게임 점수 리스트
game_scores = [450, 320, 780, 290, 650]

print("=== 게임 결과 ===")
round_number = 0
high_score = 0  # 최고 점수 저장

for score in game_scores:
    round_number = round_number + 1
    print(f"{round_number}라운드: {score}점")
    
    # 최고 점수 업데이트
    if score > high_score:
        high_score = score
        best_round = round_number

print(f"\n최고 점수: {high_score}점 ({best_round}라운드)")

 

자주 하는 실수와 주의사항

 

1. 들여쓰기 주의하기

# 올바른 들여쓰기
for i in range(3):
    print("안쪽 코드")
    print("이것도 안쪽 코드")
print("바깥쪽 코드")

# 잘못된 들여쓰기 - 오류 발생!
# for i in range(3):
# print("들여쓰기 안 됨")  # IndentationError 발생

2. 변수명 잘 정하기

# 좋은 변수명 사용
students = ["김철수", "이영희", "박민수"]
for student_name in students:
    print(f"학생: {student_name}")

# 의미 없는 변수명보다는 명확한 변수명이 좋습니다
for i in students:  # i보다는
    print(f"학생: {i}")

for name in students:  # name이 더 명확합니다
    print(f"학생: {name}")

 

마무리

for문은 파이썬에서 가장 자주 사용하는 제어문 중 하나입니다. 리스트, 튜플, 문자열 등 다양한 데이터와 함께 사용할 수 있고, range 함수와 결합하면 더욱 강력한 기능을 만들 수 있습니다.

중첩 for문과 리스트 컴프리헨션까지 익히면 복잡한 데이터 처리도 간단하게 할 수 있습니다. 많은 연습을 통해 for문을 자유자재로 사용할 수 있도록 노력해보세요.

중요한 것은 코드를 읽기 쉽게 작성하는 것입니다. 변수명을 명확하게 짓고, 들여쓰기를 정확하게 하며, 필요한 곳에 주석을 달아서 나중에 다시 봐도 이해할 수 있는 코드를 작성하는 습관을 기르시기 바랍니다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유