[Python] 반복문 - for와 while / break와 continue / 반복 실행 상태(progress bar : tqdm 패키지)
by 우와한개발자
1. for
1) 기본 문법
for 변수 in 나열가능한자료:
반복 실행할 문장
else:
반복문이 중간에 끊기지 않고 끝까지 수행되었을 때 실행할 문장
2) 특징
- 변수는 여러 개가 될 수 있음
- 나열 가능한 자료는 리스트, 튜플, 딕셔너리, 셋 등이 될 수 있음
- else 구문은 선택사항 : break로 중간에 반복문이 멈추지 않았을 때 마지막에 1번 수행.
- 반복문에 아무것도 없으면 에러 발생하기 떄문에 실행할 코드가 없는 경우 pass 를 넣어 아무것도 실행하지 않음을 명시해야함
# 구구단
for dan in range(2, 10):
for i in range(1, 10):
print(dan, "x", i, "=", dan * i)
3) 루프 변수 스코프
- 자바와 달리 루프 변수가 반복문 종료 후에도 살아있음
- 파이썬의 for문은 별도의 스코프를 생성하지 않기 때문에 루프 변수는 현재 스코프에 그대로 남음
- 루프 변수가 남아있어 의도치 않게 재사용되거나 덮어써질 수 있으니 주의
for i in range(5):
pass
print(i) # 4 → 마지막 값이 남아있음
2. while
- else 구문은 선택사앙 : break로 중간에 반복문이 멈추지 않았을 때 마지막에 1번 수행.
while 조건문:
조건이 참일 동안 반복 실행할 문장
else:
반복문이 break 없이 정상 종료됐을 때 실행할 문장
# 구구단
i = 1
while i <= 9:
print("3 x", i, "=", 3 * i)
i += 1
⚠️ range()
- 연속된 정수의 범위를 만들어주는 함수
- range객체 반환
형식 설명 예시 range(to) 0부터 to-1까지 range(5) → 0,1,2,3,4 range(from, to) from부터 to-1까지 range(2, 5) → 2,3,4 range(from, to, by) from부터 to-1까지 만큼 증가/감소 range(1, 10, 2) → 1,3,5,7,9 print(list(range(1, 11, 2))) #[1, 3, 5, 7, 9]
3. break와 continue
1) break
- 반복문 내에서 break만나면 반복문 탈출
2) continue
- 반복문 내에서 continue 이후의 문장을 실행하지 않고 건너 뜀
label과 as 키워드
- 레이블을 통해 반복문을 식별하는 기능으로 파이썬에서는 구현해놓지 않음
4. 반복문 실행상태 표시
- 반복문이 얼마나 진행되었는지 진행상태를 시각적으로 보여줄 수 있음
1) print()의 end='\r' 활용
- end='\r'은 줄바꿈 대신 커서를 맨앞으로 돌려 출력을 덮어씀
- 이를 활용해 같은 줄에 진행상태를 계속 갱신할 수 있음
import time
progress = ''
percent = 0
num = 100
for i in range(1, num+1):
percent = (i / num) * 100
progress = int(percent / 2) * '#'
time.sleep(0.1) # 0.1초씩 지연해서 보여줌
print(f'{percent:5.1f}%[{progress:<50s}] {i}', end='\r')
2) tqdm 패키지 활용
- 파이썬의 진행 바(Progress Bar) 라이브러리
- 반복문이 얼마나 진행됐는지 시각적으로 표시해주는 패키지
- 기본 내장 패키지가 아니므로 별도 설치 필요
pip install tqdm
from tqdm import tqdm
import time
for i in tqdm(range(100)):
time.sleep(0.1)
# 100%|██████████| 100/100 [00:10<00:00, 9.98it/s]
| 표시 요소 | 설명 |
| 100% | 진행률 |
| ██████████ | 진행 바 |
| 100/100 | 현재 / 전체 |
| 00:10 | 경과 시간 |
| 00:00 | 예상 남은 시간 |
| 9.98it/s | 초당 처리 속도 |
(1) 자주 사용하는 옵션
# 설명 추가
for i in tqdm(range(100), desc="학습 중"):
time.sleep(0.1)
# 학습 중: 100%|██████████| 100/100 [00:10<00:00]
# 전체 개수 직접 지정
for i in tqdm(range(100), total=100):
time.sleep(0.1)
# 진행 바 없이 텍스트만
for i in tqdm(range(100), bar_format='{l_bar}{r_bar}'):
time.sleep(0.1)
(2) 머신러닝/딥러닝에서 자주 쓰는 패턴
from tqdm import tqdm
epochs = 10
for epoch in tqdm(range(epochs), desc="Epoch"):
# 학습 코드
pass
'언어 > Python' 카테고리의 다른 글
| [Python] 함수 매개변수 - 기본값, *args, **kwargs, 순서 규칙 (0) | 2026.04.16 |
|---|---|
| [Python] 변수 스코프 - 지역변수와 전역변수, LEGB규칙, global키워드 (0) | 2026.04.16 |
| [Python] 입출력 - input()과 print() 매개변수 (0) | 2026.04.15 |
| [Python] 언더스코어(_) 정리 - 단일, private, name mangling, dunder (0) | 2026.04.15 |
| [Python] VSCode 시작하기 - 가상환경(.venv) 설정과 프로젝트 실행 (0) | 2026.04.15 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자