Q. 내장된 range()
함수를 이용해 1
이 아닌 다른 값만큼 건너뛰는 정수열을 생성할 수 있는가?
A. 할 수 있다. range()
는 선택적으로 세 번째 인수 step
을 제공한다. 따라서 range(<시작>, <끝>, <간격>)
으로 호출하면 <시작>
, <시작>+<간격>
, <시작>+2*<간격>
, ...의 정수열을 만든다. <간격>
이 양수이면 <끝>
보다 커지기 전까지, <간격>
이 음수이면 <끝>
보다 작아지기 전까지 간격을 더해간다. 예를 들어 range(0, -100, -1)
은 0
, -1
, -2
, ..., -99
정수열을 반환한다.
Q. 실수를 range()
인수로 사용할 수 있는가?
A. 사용할 수 없다. 모든 인수가 정수형이어야 한다.
Q. for
루프 안에서 루프 인덱스 변수의 값을 변경할 수 있는가?
A. 할 수 있다. 그러나 range()
에 의해 생성된 정수열에는 영향을 미치지 못한다. 예를 들어 다음 코드는 0
에서 99
까지 100
개의 정수를 출력한다.
for i in range(100): stdio.writeln(i) i += 10
Q. for
루프를 마친 후 루프 제어 변수의 값은 어떻게 되는가?
A. 루프를 실행한 최종 상태의 값이 남아 있다. 앞에 나온 질문의 답에 있는 예제 코드의 경우 for
루프를 마치고 난 후의 i
는 109
이다. 그러나 for
루프를 종료하고 나서 루프 제어 변수를 사용하는 것은 좋지 않은 생각이다. 따라서 이 책에서는 이런 스타일을 지양한다.