python/python 기초

Python 반복문(Loops) 완벽 가이드: for와 while의 활용법

김_나무 2025. 4. 3.
반응형
Python은 데이터 처리와 작업 자동화에 강력한 도구를 제공하며,
 
그중 반복문(loops)은 코드를 효율적으로 작성하는 데 필수적입니다.
 
이번 블로그 포스트에서는 Python의 두 가지 주요 반복문인 forwhile에 대해 자세히 알아보고,
 
사용법, 예제, 실무 팁, 그리고 추가적인 활용 사례를 공유하겠습니다.

1. 반복문이란?

반복문은 동일한 코드를 여러 번 실행할 수 있게 해주는 제어 구조입니다.
 
Python에서는 주로 forwhile 두 가지 반복문을 사용하며, 각각의 목적과 사용 시나리오가 다릅니다.
 
이를 통해 리스트, 문자열, 숫자 시퀀스 등 다양한 데이터에 반복적으로 접근할 수 있습니다.
 
반복문은 코드의 재사용성을 높이고, 반복적인 작업을 간소화하는 데 큰 역할을 합니다.

2. for 반복문

 
for 반복문은 시퀀스(리스트, 튜플, 문자열 등)의 각 요소를 순차적으로 탐색할 때 유용합니다. 기본 구조는 다음과 같습니다:
 
for 변수 in 시퀀스:
    # 코드 블록
 

2.1. 기본 사용법

리스트를 순회하며 각 요소를 출력하는 예제입니다.
fruits = ["apple", "banana", "orange"]

for fruit in fruits:
    print(f"I like {fruit}")
# 출력:
# I like apple
# I like banana
# I like orange
 

2.2. range()와 함께 사용

range() 함수를 사용하면 특정 범위의 숫자를 반복할 수 있습니다.
 
for i in range(5):  # 0부터 4까지
    print(i)
# 출력:
# 0
# 1
# 2
# 3
# 4

for i in range(2, 5):  # 2부터 4까지
    print(i)
# 출력:
# 2
# 3
# 4
 

2.3. enumerate()로 인덱스와 값 함께 사용

리스트의 인덱스와 값을 함께 얻고 싶을 때 enumerate()를 사용합니다.
 
for index, fruit in enumerate(fruits):
    print(f"Index {index}: {fruit}")
# 출력:
# Index 0: apple
# Index 1: banana
# Index 2: orange

3. while 반복문

while 반복문은 조건이 참인 동안 코드를 반복 실행합니다. 기본 구조는 다음과 같습니다:
 
while 조건:
    # 코드 블록
 

3.1. 기본 사용법

카운터를 사용해 0부터 4까지 출력하는 예제입니다.
 
count = 0
while count < 5:
    print(count)
    count += 1
# 출력:
# 0
# 1
# 2
# 3
# 4

 

3.2. 사용자 입력 처리

사용자가 "quit"를 입력할 때까지 반복하는 예제입니다.
 
while True:
    user_input = input("입력하세요 (quit로 종료): ")
    if user_input == "quit":
        break
    print(f"입력한 값: {user_input}")
# 출력 예:
# 입력하세요 (quit로 종료): hello
# 입력한 값: hello
# 입력하세요 (quit로 종료): quit

4. 고급 활용

4.1. break와 continue

break: 루프를 즉시 종료합니다.

 

continue: 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다.

 
for i in range(10):
    if i == 3:
        break  # 3에서 루프 종료
    print(i)
# 출력:
# 0
# 1
# 2

for i in range(5):
    if i == 2:
        continue  # 2는 건너뜀
    print(i)
# 출력:
# 0
# 1
# 3
# 4
 

4.2. 중첩 반복문

반복문을 중첩해 2D 데이터를 처리할 수 있습니다.
 
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
    for element in row:
        print(element, end=" ")
    print()  # 줄 바꿈
# 출력:
# 1 2 3
# 4 5 6
# 7 8 9
 

4.3. else와 함께 사용

forwhile 반복문은 else 블록을 가질 수 있습니다. 루프가 자연스럽게 종료될 때 실행됩니다.
 
for i in range(5):
    print(i)
else:
    print("루프가 끝났습니다!")
# 출력:
# 0
# 1
# 2
# 3
# 4
# 루프가 끝났습니다!

count = 0
while count < 3:
    print(count)
    count += 1
else:
    print("while 루프가 끝났습니다!")
# 출력:
# 0
# 1
# 2
# while 루프가 끝났습니다!

5. 실무 활용 사례

5.1. 데이터 처리

리스트에서 짝수만 필터링하는 예제입니다.
 
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = []
for num in numbers:
    if num % 2 == 0:
        even_numbers.append(num)
print(even_numbers)  # 출력: [2, 4, 6, 8, 10]
 

5.2. 파일 읽기

파일의 각 줄을 반복문을 통해 읽는 예제입니다.
 
with open("sample.txt", "r") as file:
    for line in file:
        print(line.strip())
# 출력: sample.txt의 각 줄

 

6. 성능 최적화와 디버깅

6.1. 성능 최적화

큰 데이터셋을 다룰 때는 for 대신 제너레이터 표현식을 사용하는 것이 메모리 효율적입니다.
 
# 제너레이터 사용
gen = (x * 2 for x in range(1000000))
for value in gen:
    pass  # 메모리 절약

# 일반 리스트
large_list = [x * 2 for x in range(1000000)]
 

6.2. 디버깅 팁

루프 내에서 변수 값을 추적하려면 print()나 디버거를 활용하세요. 무한 루프가 의심될 때는 Ctrl+C로 중단할 수 있습니다.

7. 주의점

 
무한 루프: while에서 조건을 잘못 설정하면 무한 루프가 발생할 수 있으니 주의하세요.
 
인덱스 오류: for에서 리스트 범위를 벗어나지 않도록 확인하세요.
 
가독성: 복잡한 중첩 루프는 함수로 분리해 유지보수성을 높이세요.
반응형

댓글

💲 추천 글