본문 바로가기
Python/기초

파이썬 반복문: for문의 A to Z 모든 것, 한 글로 정리하기

by 모두의 케빈 2023. 8. 26.

 

 

목차(Content)

 

파이썬 반복문: for문에 대하여

 > 파이썬 for문
 > for문 기초 문법
 > for문과 range() 함수

 

for문 vs while문

 > for문과 while문의 차이
 > for vs while 연습 문제

 

반복문 제어와 다중 for문\

 > for문과 continue
 > for문과 break
 > 다중 for문

 

 

 

 

 

파이썬 반복문: for문에 대하여


 

파이썬 for문

 

for문의 동작 원리
for문의 동작 원리

 

파이썬에서 반복문의 다른 종류로 for 문이 있습니다. for 문은 파이썬에서는 정말, 정말 많이 사용됩니다. 그 이유는 크게 두 가지가 있습니다.

 

첫째, for 문의 경우에는 while 문과는 다르게 ‘반복 횟수가 정해져’ 있습니다. 그래서 무한 루프에 빠질 가능성이 상대적으로 낮습니다.

 

둘째, 리스트, 튜플, 딕셔너리와 같은 순회할 수 있는 객체(iterable 객체)와 함께 사용하여 그들의 원소(element)에 개별적으로 접근할 수 있습니다.

 

참고로 for문의 반복 횟수가 정해진 이유도 iterable 객체의 원소를 하나씩 꺼내서 반복문을 실행하기 때문입니다. for 문은 함께 사용한 iterable 객체의 개수만큼만 반복됩니다. (과일 바구니에서 과일을 하나씩 꺼내는 것을 상상해 보세요.)

 

 

 

for문 기초 문법

 

예시로 사용법을 익혀 보겠습니다. 변수 ‘i’에 [1,2,3,4,5] 리스트의 원소가 하나씩 할당됩니다. 그래서 변수 i를 출력하면 1부터 5까지의 값이 순차적으로 출력됩니다. 물론 문자열도 받을 수 있습니다.

# 리스트와 for 문
for i in [1,2,3,4,5]:
    print(i)
 >>>>> 실행 결과
1
2
..
5

 

 

문자열도 ‘문자의 배열’이기 때문에 for 문과 함께 사용할 수 있습니다. 이 경우 개별 문자를 하나씩 뽑아오게 됩니다.

# 리스트와 문자열
for i in "가나다라마바":
    print(i)
 >>>>> 실행 결과
가
나
..
바

 

 

for문과 range() 함수

 

for 문은 iterable 객체의 원소를 뽑아서 변수에 대입하지만, 변수의 값을 굳이 활용하지 않아도 됩니다. 

 

대표적인 예시로, 단순히 특정 횟수만 반복하고 싶은 경우가 있을 텐데요. 이런 경우에는 range() 함수를 for 문과 함께 사용하면 편리합니다.

# for 문과 range() 함수: 10번만 반복
# while 문과 다르게, 종료 조건을 일일이 고려하지 않아도 된다.

for i in range(10):
    print("10번만 반복")
 >>>>> 실행 결과
10번만 반복
10번만 반복
...
10번만 반복

 

 

 

 

for문 vs while문


for문과 while문의 차이

 

for 문과 while 문에 대해 배우면서, 두 반복문은 언제 사용해야 하는지에 대한 고민을 하실 텐데요. 두 반복문은 특징이 명확한 만큼 사용이 권장되는 환경이 있습니다. 

 

for문과 while문 사용 시, 선택 가이드

첫째, 몇 번을 반복할지 정확히 모르는 경우에는 while 문을 사용한다.

둘째, 반복 횟수에 대해 정확히 아는 경우에는 for 문을 사용한다.

셋째, iterable 객체의 원소를 활용해야 하는 경우에는 for 문을 사용한다.

 

 

for vs while 연습 문제

 

위 내용은 어디까지나 가이드 사항입니다. 본인에게 맞는 방법을 사용하시면 됩니다. 아래 반복문에 대한 예제를 살펴보면서 연습을 해보세요.

 

연습문제 #1

# 문제1: 사용자가 "stop"을 입력하기 전까지 값을 입력 받고 출력하기
# 반복 횟수를 모르기 때문에 while 문을 사용

user_input = input()

while True:
    if user_input == "stop":
        break
    
    print(user_input)
    user_input = input()

 

연습문제 #2

# 문제2: 5번 값을 입력 받고, 입력 받은 값의 합을 출력
# 횟수가 정해져 있으므로, for 문 사용

total = 0
user_input = 0

for i in range(5):
    user_input = int(input())
    total += user_input
    
print(total)

 

연습문제 #3

# 문제3: 반복문을 사용하여 "_".join(list("abcde")) 와 같은 정답을 출력하기

total = ''

for alphabet in list('abcde'):
    if alphabet == 'e':
        total += alphabet
    else:
        total += alphabet + '_'
        
print("_".join(list("abcde")))
print(total)

 

 

 

 

반복문 제어와 다중 for문


for문과 continue

 

while 문 수업에서 반복문을 제어하는 방법으로 continue와 break문이 있다고 말씀드렸습니다. for문도 반복문이기 때문에 continue와 break로 제어할 수 있습니다.

 

continue는 특정 조건을 만족하면, continue 아래의 코드는 실행하지 않고 다음 반복 루프로 이동합니다. (스킵의 개념)

# for와 continue
# 2의 배수이면 현재 루프를 스킵하고 다음 루프로 이동

for i in range(10):
    if i % 2 == 0:
        continue
    print(i)

 

for문과 break

 

break문은 특정 조건을 만족하면 반복문을 즉시 탈출합니다. (중단의 개념)

# for와 break
# 특정 조건을 만족하면, 반복문을 탈출한다.

import random

stop_number = random.randint(1,100)

for i in range(100):
    if i == stop_number:
        print(f"정수 {i}가 확인되어서 반복문을 멈춥니다.")

 

 

다중 for문

 

for 문도 아래 for 문을 사용할 수 있습니다. 다중 for 문은 특히 중요한데요. 엑셀에는 행과 열이 있습니다. 파이썬에서 엑셀 형태의 테이블 데이터를 다룰 수 있는  몇 가지 방법이 있는데, 그중에 하나가 다중 for 문입니다. 

 

행과 열에 접근해야 하기 때문에 최소 2개의 for 문이 필요합니다. 다중 for 문은 철저히 연습하셔야 합니다. 먼저 이중 for 문입니다. 

 

다중 for문 동작 순서

 

이중 for 문은 가장 바깥의 for 문의 원소 한 번당, 안쪽의 for 문이 모두 반복됩니다. 파란색 글씨를 기준으로 순서를 정리해 드리면 이중 for 문의 동작 원리는 아래와 같습니다.

 

※이중 for 문 동작 순서

1 → 1-1, 1-2,1-3,1-4,1-5

2 → 2-1, 2-2,2-3,2-4,2-5

3 → 3-1, 3-2,3-3,3-4,3-5

4 → 4-1, 4-2,4-3,4-4,4-5

5 → 5-1, 5-2,5-3,5-4,5-5

 

예제를 통해 익혀 보도록 하겠습니다. 아래 코드 결과를 보면, a가 고정인 상태에서 1부터 5까지의 숫자가 출력되는 것이 보입니다. 이를 통해 바깥의 for 문 원소 한 개당, 안쪽의 for 문이 계속 반복되는 것을 알 수 있습니다.

 

# 바깥의 for 문 원소 한 개 당, 안 쪽의 for 문이 모두 반복된다.

for i in ['a','b','c','d','e']:
    for j in range(1,6):
        print(i,j)
 >>>>> 실행 결과
a 1
a 2
a 3
a 4
a 5
b 1
b 2
...

 

 

댓글