
처음 Python을 배우면 비슷한 코드를 계속 반복해서 작성하는 일이 생각보다 많습니다. 숫자를 여러 번 출력하거나, 리스트 안의 데이터를 하나씩 처리하거나, 같은 계산을 반복할 때 특히 그렇습니다. 처음에는 단순 복사로 해결할 수 있어 보이지만, 코드가 길어질수록 수정도 어려워지고 실수도 빠르게 늘어납니다.
예전에 숫자 1부터 100까지 출력하는 코드를 직접 여러 줄 작성해본 적이 있습니다. 처음에는 단순해 보였는데 숫자를 하나씩 수정하다 보니 금방 비효율적이라는 걸 느끼게 되더라고요. 그때 반복문이 왜 필요한지 자연스럽게 이해하게 됐습니다.
반복문은 같은 작업을 여러 번 실행하도록 만드는 문법입니다. Python에서는 주로 for문과 while문을 사용합니다. 반복문을 배우기 시작하면 코드가 짧아지는 것뿐 아니라, 컴퓨터에게 반복 작업을 대신 시키는 감각 자체가 생기기 시작합니다.
반복문은 왜 필요한가
많은 사람이 반복문을 단순히 코드를 줄이는 기능 정도로 생각합니다. 하지만 실제로는 반복되는 작업 자체를 규칙으로 구조화하는 문법에 더 가깝습니다.
예를 들어 같은 print() 문장을 여러 번 작성한다고 가정해보겠습니다. 처음에는 큰 문제가 없어 보이지만, 출력 횟수가 늘어나거나 수정 사항이 생기면 코드 관리가 급격히 번거로워집니다. 같은 코드를 반복해서 작성하는 방식은 실수 가능성도 커집니다.
반복문은 이런 문제를 해결합니다. “이 작업을 여러 번 반복한다”라는 규칙 자체를 코드로 표현할 수 있기 때문입니다.
실제 개발에서는 데이터를 하나씩 처리하거나, 여러 사용자의 정보를 검사하거나, 파일 목록을 순서대로 읽는 상황이 매우 자주 등장합니다. 반복문이 없다면 이런 작업을 수작업으로 처리해야 합니다.
Python 공식 문서에서도 반복문은 핵심 제어 흐름 문법으로 다뤄집니다. 반복문을 배우는 순간부터 코드는 단순 계산기가 아니라 자동화 도구처럼 움직이기 시작합니다.
for문은 정해진 대상을 하나씩 처리할 때 쓴다
반복 횟수나 반복 대상이 정해져 있다면 대부분 for문이 더 적합합니다.
Python 입문자가 가장 먼저 배우는 반복문도 보통 for문입니다. for문은 리스트나 문자열처럼 순서가 있는 데이터를 하나씩 꺼내 처리할 때 사용합니다.
예를 들어 학생 이름 목록이 들어 있는 리스트가 있다면, for문은 이름을 하나씩 가져와 출력할 수 있습니다. 개발에서는 이런 방식으로 데이터를 순서대로 처리하는 일이 매우 많습니다.
특히 Python의 for문은 비교적 읽기 쉬운 편입니다. 다른 언어처럼 초기값이나 증가식을 복잡하게 직접 작성하지 않아도 되기 때문입니다. 그래서 입문자도 흐름을 이해하기 어렵지 않습니다.
여기서 자주 함께 등장하는 것이 range() 함수입니다. range()는 특정 숫자 범위를 반복할 수 있도록 만들어줍니다.
| 표현 | 실제 생성 범위 |
|---|---|
range(5) |
0 ~ 4 |
range(1, 5) |
1 ~ 4 |
range(1, 10, 2) |
1, 3, 5, 7, 9 |
입문자는 여기서 “왜 5까지가 아니라 4까지인가” 헷갈리는 경우가 많습니다. Python의 범위는 시작 숫자를 포함하고 마지막 숫자는 포함하지 않는 방식이 기본이기 때문입니다.
이런 구조에 익숙해지면 “10번 반복하기”, “1부터 100까지 출력하기” 같은 작업도 쉽게 처리할 수 있습니다.
실제 개발에서도 리스트 처리, 데이터 반복, 파일 탐색 같은 작업에서 for문은 가장 자주 사용됩니다.
while문은 조건이 참인 동안 계속 실행된다
반복 횟수가 아니라 종료 조건이 중요한 상황에서는 while문이 더 적합합니다.
while문은 특정 조건이 참인 동안 반복을 계속 실행합니다.
예를 들어 사용자가 올바른 비밀번호를 입력할 때까지 계속 입력을 받는 상황이 있습니다. 이런 경우에는 반복 횟수를 미리 알 수 없습니다. 이럴 때 while문이 적합합니다.
반대로 for문은 반복 횟수나 대상이 정해져 있는 상황에서 많이 사용됩니다.
- 반복 대상이나 횟수가 정해져 있으면
for문 - 종료 조건을 기준으로 반복하면
while문
다만 while문은 입문자가 가장 많이 실수하는 문법 중 하나이기도 합니다. 조건이 계속 참으로 유지되면 반복이 끝나지 않는 무한 반복 상태가 발생할 수 있기 때문입니다.
실제로 처음 while문을 배울 때 증가 코드를 빼먹어서 프로그램이 계속 실행된 적이 있습니다. 프로그램 창이 멈춘 것처럼 보이는데 원인을 찾지 못해서 당황하는 경우가 꽤 많습니다.
예를 들어 반복 횟수를 증가시키는 코드를 작성하지 않으면 조건이 바뀌지 않습니다. 그러면 프로그램은 종료 시점을 찾지 못하고 계속 반복됩니다.
그래서 while문에서는 “언제 반복이 끝나는가”를 먼저 생각하는 습관이 중요합니다.

반복문 안에서 값은 어떻게 변하는가
반복문은 단순 실행이 아니라 상태가 계속 변하는 구조입니다.
가장 대표적인 예시는 누적 합계입니다. 반복문은 숫자를 하나씩 가져오면서 기존 값에 계속 더할 수 있습니다. 이런 방식으로 총합, 평균, 개수 계산 등을 처리합니다.
또 자주 등장하는 개념이 카운트입니다. 특정 조건을 만족하는 데이터 개수를 세거나, 반복 횟수를 기록하는 데 사용됩니다.
입문자는 보통 “왜 값이 계속 바뀌는지” 헷갈려합니다. 하지만 실제로는 반복이 한 번 실행될 때마다 변수에 새로운 값이 다시 저장되는 구조입니다.
다음 개념들이 반복문에서 가장 자주 사용됩니다.
- 누적 합계 계산
- 반복 횟수 카운트
- 현재 위치 추적
- 조건 만족 개수 세기
이 흐름을 이해하면 이후 리스트 처리나 데이터 분석 코드도 훨씬 쉽게 읽히기 시작합니다. 특히 반복문 안에서 변수 상태가 어떻게 변하는지 직접 출력해보는 연습이 도움이 됩니다.
break와 continue로 반복 흐름을 조절한다
실제 개발에서는 단순 반복만 수행하는 경우보다, 반복 중 흐름을 바꾸는 경우가 훨씬 많습니다.
이때 사용하는 문법이 break와 continue입니다.
| 문법 | 역할 |
|---|---|
break |
반복 자체 종료 |
continue |
현재 반복만 건너뛰기 |
break는 원하는 값을 찾았을 때 더 이상 반복할 필요가 없는 상황에서 사용합니다.
반대로 continue는 특정 조건의 데이터만 제외하고 처리할 때 자주 사용됩니다.
입문 단계에서는 둘의 차이를 헷갈리는 경우가 많습니다. 하지만 기준은 단순합니다.
break는 반복 종료이고, continue는 현재 반복만 건너뛰기입니다.
실제 개발에서는 사용자 입력 검사, 데이터 필터링, 검색 기능 구현 등에서 매우 자주 등장합니다. 특히 데이터 양이 많아질수록 필요 없는 반복을 빨리 종료하는 것이 성능에도 영향을 줄 수 있습니다.
반복문을 이해하면 조건문 학습이 쉬워진다
반복문은 같은 작업을 여러 번 실행하는 구조입니다. 하지만 실제 프로그램은 단순 반복만 하지 않습니다. 반복하면서 특정 조건에 따라 다른 동작을 수행합니다.
예를 들어 학생 점수를 반복해서 검사하면서 60점 이상만 출력할 수도 있습니다. 또는 상품 목록을 반복하면서 특정 가격 이상의 상품만 필터링할 수도 있습니다.
이때 필요한 것이 조건문입니다.
조건문은 코드에 판단 기준을 넣는 역할을 합니다. 반복문과 조건문이 결합되면 프로그램은 단순 반복을 넘어서 상황에 따라 다르게 동작하는 구조를 가지게 됩니다.
실제 개발에서는 반복문과 조건문이 거의 항상 함께 사용됩니다. 반복문만으로는 단순 자동화에 머물고, 조건문만으로는 많은 데이터를 효율적으로 처리하기 어렵기 때문입니다.
그래서 Python 기초를 공부할 때도 반복문 다음 단계로 조건문을 배우는 흐름이 자연스럽습니다. 반복 구조를 이해한 상태에서 조건문을 배우면 코드 흐름 자체를 훨씬 쉽게 이해할 수 있습니다.
다음 글에서는 if, elif, else를 이용해 코드가 스스로 판단하도록 만드는 조건문 구조를 살펴보게 됩니다.