더북(TheBook)

늘 그렇듯 프로그램을 이해하는 가장 좋은 방법은 실행해 변숫값을 추적하는 것이다. coupon collector.pywhile 루프 끝에 루프가 반복될 때마다 변숫값을 출력하는 코드를 간단히 추가할 수 있다. [표 1.4.6]에서 FFalse를, TTrue를 나타낸다. 큰 배열을 사용하는 프로그램을 추적하는 것은 쉽지 않을 것이다. 프로그램에 길이가 n인 배열이 있으면 변수도 n개이므로 이 n개의 변수를 모두 나열해야 한다. random.randrange()를 사용하는 프로그램도 실행할 때마다 값이 달라지므로 추적하기 곤란하다. 그리고 이에 맞게 변수 간의 관계도 신중히 검사해야 한다. 이 표에서 collectedCountisCollected[] 배열에서 값이 True인 요소의 개수와 똑같아야 한다.

▼ 표 1.4.6 python3 couponcollector.py 6를 실행할 때의 트레이스

val

isCollected[]

collectedCount

count

 

0

1

2

3

4

5

 

 

 

F

F

F

F

F

F

 

0

0

2

 

F

F

T

F

F

F

 

1

1

0

 

T

F

T

F

F

F

 

2

2

4

 

T

F

T

F

T

F

 

3

3

0

 

T

F

T

F

T

F

 

3

4

1

 

T

T

T

F

T

F

 

4

5

2

 

T

T

T

F

T

F

 

4

6

5

 

T

T

T

F

T

T

 

5

7

0

 

T

T

T

F

T

T

 

5

8

1

 

T

T

T

F

T

T

 

5

9

3

 

T

T

T

T

T

T

 

6

10

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