728x90
※ IT: for Loop vs while Loop.
안녕하세요. 듀스트림입니다.
오늘 포스팅은 for문과 while문의 차이입니다.
예시에 사용된 언어는 C와 Python입니다.
for 루프 vs while 루프
| 구분 | for | while |
| 사용 의도 | “초기화 → 조건 → 증감” 또는 “컬렉션 순회” 반복 횟수나 대상이 명확할 때 유리 | “조건이 참인 동안 계속” 반복 횟수를 알 수 없거나 조건으로 제어할 때 유리 |
| 조건 검사 시점 | 루프 진입 전 조건 검사 → 조건이 처음부터 거짓이면 본문을 한 번도 실행하지 않음 | |
| 장점 | C: 반복 변수 선언·증감이 헤더에 모여 가독성↑ | 조건만 바꿔도 무한 루프·조기 종료 등을 표현하기 쉬움 |
| Python: iterable 순회가 간결 | ||
| 언어별 특징 | C: 초기화·조건·증감을 헤더에 작성 | C: 증감·초깃값이 루프 외부에 존재 |
| Python: 시퀀스·이터레이터를 직접 순회, else 구문 사용 가능 | Python: else 구문 사용 가능 | |
for 루프 예시
C
#include <stdio.h>
int main(void) {
/* 0~9까지 정확히 10회 반복 */
for (int i = 0; i < 10; ++i) {
printf("[for] i = %d\n", i);
}
return 0;
}
Python
# iterable(시퀀스·이터레이터)을 직접 순회
names = ["kim", "lee", "park"]
for name in names:
print(f"[for] {name}")# else 사용 예시
n = 17
for i in range(2, int(n ** 0.5) + 1): # 2부터 n의 제곱근까지 반복
if n % i == 0: # 나누어떨어지면
print(f"{n} = {i} * {n//i}") # 나누어떨어지는 두 수 출력
break # 합성수이면 반복 종료 else는 실행되지 않음
else: # break 없이 끝났을 때 실행
print(f"{n} is prime") # 소수일 경우while 루프 예시
C
#include <stdio.h>
int main(void) {
/* 예시1: 조건(i < 10)이 참인 동안 반복 */
int j = 0;
while (j < 10) {
printf("[while] j = %d\n", j);
/* 증감은 루프 본문에서 직접 수행 */
j++;
}
/* 예시2: 입력이 음수이면 종료 */
int n;
printf("양수를 입력하세요 (음수면 종료): ");
/* 조건 기반 */
while (scanf("%d", &n) == 1 && n >= 0) {
printf("입력한 값 = %d\n", n);
}
return 0;
}
Python
# 조건 기반 반복
names = ["kim", "lee", "park"]
count = 0
while count < len(names):
print(f"[while] {names[count]}")
count += 1# else 사용 예시: 재시도 루프
attempt = 0
while attempt < 3:
pwd = input("비밀번호 입력: ")
if pwd == "secret":
print("로그인 성공")
break # 성공 시 else 건너뜀
attempt += 1
else:
print("3회 실패 → 계정 잠금")루프 선택 예시
| 시나리오 | 추천 루프 |
| 반복 횟수를 알고 있거나 범위를 순회할 때 | for (예: for (i = 0; i < N; ++i)) |
| 컬렉션/리스트·딕셔너리 등을 순회할 때 (Python) | for (for item in iterable:) |
| 종료 조건이 이벤트·입력·센서 값처럼 동적일 때 | while |
| 무한 루프 후 내부에서 break로 탈출할 때 | while (true) 또는 for(;;) (C) / while True: (Python) |
요약
- 두 루프는 기능적으로 동일(본문을 반복 실행)하지만 의도 표현과 가독성이 다릅니다.
- C에서는 for가 초기화·조건·증감을 한눈에 보여 카운팅 루프에 유리하고, while은 조건만 두고 증감을 자유롭게 배치해 조건 루프에 유리합니다.
- Python에서는 for가 iterable 순회에 최적화되어 있고, while은 조건 기반 반복이나 무한 루프에 주로 사용됩니다.
- 표현하고 싶은 “멈춤 시점”이 명확하면 for 사용, 조건이 먼저고 횟수를 예측하기 어려우면 while을 사용하면 됩니다.
오늘은 여기까지~
728x90
'IT 여러가지' 카테고리의 다른 글
| IT: DBA? (1) | 2025.09.13 |
|---|---|
| IT: RDBMS 테이블 설계 체크리스트 (3) | 2025.07.16 |
| IT: RDBMS 스타스키마 (1) | 2025.07.09 |
| IT: RDBMS 반정규화 (2) | 2025.07.08 |
| IT: RDBMS 정규화 (2) | 2025.07.07 |