15.4 숫자를 감소시키기

forrange를 사용하면 숫자가 증가하면서 반복합니다. 그럼 숫자를 감소시킬 수는 없을까요?

>>> for i in range(10, 0):    # range(10, 0)은 동작하지 않음
...     print('Hello, world!', i)
...

range(10, 0)과 같이 시작하는 숫자를 큰 숫자로 지정하고 끝나는 숫자를 작은 숫자로 지정하면 숫자가 감소할 것 같은데 실행을 해보면 아무것도 출력되지 않습니다. 왜냐하면 range는 숫자가 증가하는 기본 값이 양수 1이기 때문입니다.

숫자를 역순으로 생성하려면 증가 폭을 음수로 지정하면 됩니다.

>>> for i in range(10, 0, -1):    # 10에서 1까지 역순으로 숫자 생성
...     print('Hello, world!', i)
...
Hello, world! 10
Hello, world! 9
Hello, world! 8
... (생략)
Hello, world! 2
Hello, world! 1

range(10, 0, -1)는 10부터 1까지 -1씩 증가하는 숫자를 생성합니다. 따라서 10부터 1까지 1씩 감소하면서 반복합니다. 특히 마지막 숫자는 range에 지정한 끝나는 숫자보다 1이 더 크다는 점 기억하세요.

증가 폭을 음수로 지정하는 방법 말고도 reversed를 사용하면 숫자의 순서를 반대로 뒤집을 수 있습니다.

  • for 변수 in reversed(range(횟수))
  • for 변수 in reversed(range(시작, 끝))
  • for 변수 in reversed(range(시작, 끝, 증가폭))
>>> for i in reversed(range(10)):    # range에 reversed를 사용하여 숫자의 순서를 반대로 뒤집음
...     print('Hello, world!', i)    # 9부터 0까지 10번 반복
...
Hello, world! 9
Hello, world! 8
Hello, world! 7
... (생략)
Hello, world! 1
Hello, world! 0

range(10)으로 0부터 9까지 숫자를 생성한 뒤 reversed를 사용하여 숫자의 순서를 반대로 뒤집었습니다. 따라서 9부터 0까지 10번 반복합니다.