더북(TheBook)

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 루프를 마치고 난 후의 i109이다. 그러나 for 루프를 종료하고 나서 루프 제어 변수를 사용하는 것은 좋지 않은 생각이다. 따라서 이 책에서는 이런 스타일을 지양한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.