Chapter 3. range 함수 연습

지난 Chapter에서 설명했던 반복문에 대한 보강이 될 수도 있고 range 함수에 대한 보강이 될 수도 있겠네요. 지난 Chapter의 반복문에서 뭔가 캐치하셨길 바랍니다.

제가 말하고 싶었던 것은 지난 Chapter의 반복문이 C#의 foreach, VB .NET의 For Each와 같다는 뜻이었습니다. Python에서 i라는 변수를 선언하고 in 지시자를 이용하여 range 함수가 반환한 것을 탐색하도록 했었지요. 그렇습니다. range 함수는 .NET Framework의 관점에서 보았을 때 정수형 배열을 생성해주는 Static Method 정도로 이해할 수 있겠습니다.

range 함수의 용법에 대해 오늘은 좀 더 살펴보도록 하겠습니다. 제가 지금부터 이야기하는 C 코드들을 Python 코드와 대조해보시고 변환해 보시면 유용할 것입니다.

C 언어에서 0부터 n까지 수를 증가시키며 반복하기 위해 우리는 흔히 이와 같이 코딩하였습니다. 미리 말씀드리자면 n은 다른 수로 대체하는 것이 올바르겠지요?


int i;

for(i=0; i<n; i++)
{
  // blah blah blah…
  fprintf(stdout, “%d”, i);
}

위의 예제를 Python 스타일로 만들어봅니다.


for i in range(n):
  print i

range() 함수는 우리가 의도한 대로 0부터 n-1까지 반복하며 매회 그 카운트를 표준 출력 스트림에 출력하였습니다. 콘솔에 프린트할 수도 있는 것이지만 표준 출력 스트림은 얼마든지 대체가 가능한 사항이기 때문에 위의 C 스타일 코드에서도 굳이 fprintf를 선택하였습니다. (유닉스나 리눅스와 같은 OS를 조금이라도 공부해 보셨다면 아실 수 있는 내용이니까 이 정도로 해두겠습니다.)

지난 Chapter에서 설명하였던 것과 마찬가지로 range에는 세 가지 타입이 있습니다. 위에서 사용한 것은 range 함수의 기본 사용법입니다. 위의 Python 예제와 완전히 같지만 range 함수의 다른 버전을 이용하도록 변형해 보면 아래와 같습니다.


for i in range(0, n):
  print i
for i in range(0, n, 1):
  print i

두 번째를 살펴보도록 합니다. 시작점을 0으로하고 끝점을 n으로 지정하였는데, 실제로 나타나는 끝 원소는 n – 1이기 때문에 우리가 의도한 것과 같습니다. 만약 정확히 n을 지정하려 하였다면 n+1을 끝 원소로 대신 주면 됩니다. 즉, n+1-1이 끝점이므로 n이 반환되는 것입니다.

세 번째에서도 위의 두 번째 예제와 같은 의도로 처음 두 인자가 지정되었습니다. 하지만 세 번째 인자의 의미가 중요한데, 우리가 for 구문에서 제일 중요하게 여기는 사항 중의 하나인 증감 연산에 관한 사항입니다. 아쉽게도 더하거나 빼는 정도로밖에 처리가 안되지만 이곳의 값이 양수냐 음수냐에 따라서 진행방향이 달리 결정됩니다. 위의 예제에서는 양의 정수 1을 넣었으므로 숫자 1씩 양의 방향으로 증가할 것을 지시하고 있는 것입니다.

다양한 형태의 for 문을 가지고 연습해보시기 바랍니다.

Chapter 3. range 함수 연습”에 대한 2개의 생각

  1. 일반 웹 페이지에서 장식을 위해서 넣었던 이탤릭체인데 블로그에 그대로 가지고온거예요. ㅎㅎ; 나중에 시간나면 돌아다니면서 이탤릭체를 지워야죠.

댓글 남기기