파이썬 for문과 C언어 for문은 무엇이 다를까?

파이썬 for문과 C언어 for문은 무엇이 다를까?

두 언어 모두 반복 작업에 for를 사용하지만 기준은 다릅니다. 파이썬은 목록이나 문자열에서 값을 하나씩 꺼내는 순회가 중심이고, C언어는 초기식·조건식·증감식으로 반복 상태를 직접 제어합니다. 같은 작업을 두 언어로 비교하면 차이가 선명해집니다.

핵심 차이 한눈에 보기

항목파이썬C언어
기본 형태for 값 in 대상:for (초기식; 조건식; 증감식)
반복 기준이터러블에서 값을 꺼냄조건식이 참인지 검사
인덱스필요할 때 enumerate() 사용루프 변수로 직접 관리
끝값range()의 끝값은 제외< 또는 <=로 결정

같은 작업 1: 과일 이름 출력하기

파이썬에서는 리스트 자체를 순회하는 방식이 가장 자연스럽습니다. 목록 길이나 현재 인덱스를 직접 관리하지 않습니다.

fruits = ["apple", "banana", "cherry"]

for fruit in fruits:
    print(fruit)

C언어에서는 배열 인덱스와 원소 개수를 이용합니다. i = 0으로 시작해 i < count인 동안 실행하고, 매번 i++로 1을 더합니다.

#include <stdio.h>

int main(void) {
    const char *fruits[] = {"apple", "banana", "cherry"};
    int count = sizeof(fruits) / sizeof(fruits[0]);

    for (int i = 0; i < count; i++) {
        printf("%s\n", fruits[i]);
    }

    return 0;
}

같은 작업 2: 1부터 10까지 더하기

파이썬의 range(1, 11)은 1부터 11 직전인 10까지 만듭니다.

total = 0

for number in range(1, 11):
    total += number

print(total)  # 55

C언어에서는 조건식에 number <= 10을 적어 10을 포함합니다.

#include <stdio.h>

int main(void) {
    int total = 0;

    for (int number = 1; number <= 10; number++) {
        total += number;
    }

    printf("%d\n", total);  /* 55 */
    return 0;
}

결과는 같지만 끝값 표현이 다릅니다. 이 차이를 놓치면 한 번 덜 반복하거나 한 번 더 반복하는 경계 오류가 생깁니다.

파이썬에서 번호와 값이 모두 필요할 때

range(len(fruits))도 가능하지만 단순 순회에는 불필요한 인덱스 접근이 생깁니다. 번호까지 필요하다면 enumerate()가 의도를 더 잘 보여 줍니다.

fruits = ["apple", "banana", "cherry"]

for number, fruit in enumerate(fruits, start=1):
    print(f"{number}. {fruit}")

start=1은 출력할 번호만 1부터 시작하게 합니다. 리스트 내부 인덱스가 바뀌는 것은 아닙니다.

증가 폭과 역순 반복

두 칸씩 증가할 때 파이썬은 range(시작, 끝, 간격), C언어는 증감식에 i += 2를 사용합니다.

# Python: 0, 2, 4, 6, 8
for i in range(0, 10, 2):
    print(i)
/* C: 0, 2, 4, 6, 8 */
for (int i = 0; i < 10; i += 2) {
    printf("%d\n", i);
}

역순은 파이썬에서 range(5, 0, -1), C언어에서 for (int i = 5; i > 0; i--)로 작성할 수 있습니다.

자주 생기는 오류

끝값을 포함한다고 착각하기

range(1, 10)에는 10이 없습니다. 10까지 필요하면 range(1, 11)로 씁니다. C언어에서는 i < 10i <= 10을 구분해야 합니다.

배열 범위를 한 칸 넘기기

원소가 3개라면 유효한 인덱스는 0, 1, 2입니다. 파이썬은 잘못된 접근에 IndexError를 내지만, C언어에서 배열 범위 밖 접근은 정의되지 않은 동작을 일으킬 수 있어 더욱 주의해야 합니다.

반복 중 목록 크기 바꾸기

순회 중인 파이썬 리스트에서 원소를 삭제하면 다음 원소를 건너뛸 수 있습니다. 삭제할 값을 걸러 새 리스트를 만드는 편이 안전합니다. C언어에서도 원소를 이동한다면 인덱스와 길이를 함께 갱신해야 합니다.

C언어의 증감 방향을 반대로 쓰기

i < 10인데 i--를 사용하면 반복이 끝나지 않을 수 있습니다. 초기값, 조건식, 증감식이 같은 방향을 가리키는지 한 세트로 확인합니다.

두 언어로 직접 옮겨 쓰는 연습

정수 목록에서 음수만 제외하고 나머지 합계를 구하는 프로그램을 파이썬과 C로 각각 작성해 보십시오. 파이썬에서는 값을 직접 순회하고, C에서는 배열 길이와 인덱스를 사용합니다. 두 코드에서 반복 종료 조건을 누가 관리하는지 주석으로 표시하면 차이를 더 분명히 이해할 수 있습니다.

검토 체크포인트

파이썬의 range(5)와 C의 i < 5가 모두 0부터 4까지라는 점, break가 가장 가까운 반복문 하나만 끝낸다는 점을 작은 출력으로 확인해 보십시오. 문법을 비교할 때는 모양보다 어떤 상태를 개발자가 직접 관리해야 하는지를 보는 것이 중요합니다.

정리

파이썬 for문은 값을 꺼내는 순회 중심이고, C언어 for문은 반복 상태를 직접 제어하는 조건 중심입니다. 파이썬에서는 for item in items로 시작하고 번호가 필요할 때 enumerate(), 숫자 범위가 필요할 때 range()를 선택하면 좋습니다. C언어에서는 시작값·종료 조건·증감 방향과 배열의 마지막 유효 인덱스를 함께 확인해야 합니다.