For 루프

Tip학습 목표
  • for 루프의 용도와 작동 원리를 이해합니다.
  • 단순한 루프의 실행 과정을 추적하고 반복마다 변수 값이 어떻게 변하는지 파악합니다.
  • 누적기(Accumulator) 패턴을 사용하여 값을 집계하는 루프를 작성합니다.
Note질문
  • 프로그램이 여러 작업을 자동으로 반복하게 하려면 어떻게 해야 하나요?

for 루프를 사용한 반복 작업

  • 수백 개의 데이터를 하나씩 일일이 변수에 할당하여 계산하는 것은 매우 번거롭고 오류가 생기기 쉽습니다.
  • for 루프는 리스트, 문자열 등 컬렉션의 각 항목에 대해 명령을 자동으로 반복 실행하도록 파이썬에 지시합니다.
  • “이 그룹에 있는 각각의 항목에 대해, 다음 작업을 수행하라”는 의미입니다.
for number in [2, 3, 5]:
    print(number)
2
3
5

위 코드는 아래와 같이 세 번의 출력 명령을 실행하는 것과 같습니다.

print(2)
print(3)
print(5)
2
3
5

for 루프의 구성 요소

for 루프는 크게 컬렉션, 루프 변수, 본문으로 구성됩니다.

for number in [2, 3, 5]:
    print(number)
2
3
5
  • 컬렉션([2, 3, 5]): 반복 대상이 되는 데이터 묶음입니다.
  • 루프 변수(number): 각 반복 단계에서 컬렉션으로부터 하나씩 가져온 값을 담는 변수입니다. “현재 처리 중인 항목”을 의미합니다.
  • 본문(print(number)): 각 항목에 대해 실행할 명령 블록입니다.

문법: 콜론과 들여쓰기

  • 루프의 첫 번째 줄은 반드시 콜론(:)으로 끝나야 합니다.
  • 반복 실행될 본문 코드는 반드시 들여쓰기를 해야 합니다. 파이썬은 들여쓰기를 통해 어디까지가 루프의 본문인지를 구분합니다.
  • 일반적으로 스페이스 4칸을 사용하며, 일관성을 유지하는 것이 중요합니다.
# 들여쓰기 오류 예시 (IndentationError 발생)
# for number in [2, 3, 5]:
# print(number)

루프 변수 이름 짓기

  • 루프 변수의 이름은 일반 변수와 마찬가지로 자유롭게 지을 수 있습니다.
  • 가급적 루프 내부에서 다루는 데이터의 의미를 잘 나타내는 이름을 사용하는 것이 좋습니다.
# number 대신 다른 이름을 사용해도 작동 방식은 같습니다.
for n in [2, 3, 5]:
    print(n)
2
3
5

루프 본문 내의 여러 문장

  • 루프 본문에는 여러 줄의 코드가 들어갈 수 있습니다.
  • 하지만 루프가 너무 길어지면 코드의 흐름을 파악하기 어려우므로, 가급적 간결하게 유지하는 것이 좋습니다.
primes = [2, 3, 5]
for p in primes:
    squared = p ** 2
    cubed = p ** 3
    print(p, squared, cubed)
2 4 8
3 9 27
5 25 125

숫자 범위를 순회하는 range()

  • range(N) 함수를 사용하면 0부터 N-1까지의 숫자 시퀀스를 생성할 수 있습니다.
  • 이는 리스트나 문자열의 인덱스를 순회할 때 매우 유용합니다.
for i in range(3):
    print(i)
0
1
2

누적기(Accumulator) 패턴

  • 여러 값의 합계나 결과를 하나로 모으는 일반적인 프로그래밍 패턴입니다.
    1. 합계를 담을 변수(누적기)를 0이나 빈 문자열 등으로 초기화합니다.
    2. 루프를 돌며 각 값을 누적기 변수에 더하거나 업데이트합니다.
# 1부터 10까지의 합 구하기
total = 0
for number in range(10):
   total = total + (number + 1)
print(total)
55

Important연습 문제

실행 과정 추적하기

다음 코드가 실행될 때 total 변수의 값이 어떻게 변하는지 설명해 보세요.

total = 0
for char in "tin":
    total = total + 1

문자열 “tin”의 각 문자를 순회하며 total에 1을 더합니다. ‘t’, ‘i’, ‘n’ 총 세 번 반복되므로 최종 결과는 3이 됩니다.

Important연습 문제

누적기 활용: 약어 만들기

리스트 ["red", "green", "blue"]를 순회하며 각 단어의 첫 글자를 대문자로 따와 "RGB"라는 약어를 만드는 코드를 작성해 보세요.

acronym = ""
for word in ["red", "green", "blue"]:
    acronym = acronym + word[0].upper()
print(acronym)
Important연습 문제

변수 명명 오류 수정하기

다음 코드에서 발생하는 오류를 찾아 수정해 보세요.

for number in range(10):
    if (Number % 3) == 0:
        message = message + "a"
    else:
        message = message + "b"
print(message)
  1. Number는 정의되지 않았습니다. 파이썬은 대소문자를 구분하므로 number로 고쳐야 합니다.
  2. message 변수가 사전에 정의되어 있지 않습니다. 루프 시작 전에 message = ""로 초기화해야 합니다.
Note핵심 요약
  • for 루프는 데이터 묶음을 순회하며 동일한 작업을 반복합니다.
  • 콜론(:)과 들여쓰기를 사용하여 루프의 범위를 지정합니다.
  • range() 함수로 일정한 범위의 숫자를 생성하여 반복할 수 있습니다.
  • 누적기 패턴을 사용하여 여러 데이터로부터 하나의 결과를 산출할 수 있습니다.