알아 보기
이전에 for 명령어를 사용해서 만든 1부터 10까지 합계 구하기 프로그램(05C-sum.py)과 오늘 while 명령어를 사용해서 만든 프로그램을 비교해 볼까요?
for 명령어를 사용했을 때 |
while 명령어를 사용했을 때 |
s = 0 for x in range(1, 11): s = s + x print("x:", x, "sum:", s) |
s = 0 x = 1 while x <= 10: s = s + x print("x:", x, "sum:", s) x = x + 1 |
두 프로그램 모두 합계를 저장하는 변수 s를 0으로 설정했고, 필요한 만큼 반복하여 합계 s에 x 값을 더하면서 그때그때 값을 출력합니다. 두 프로그램이 다른 점은 무엇일까요? for는 range(1, 11) 명령에 따라 1부터 1씩 더하면서 10까지(11은 제외) 반복합니다. while은 x에 1을 넣고(x = 1) 반복 블록을 시작하며, 반복 블록의 마지막에 x = x+1을 직접 명령어로 적습니다.
‘아니, 자동으로 처음 값도 설정해 주고 값도 1씩 더해 주는 for 명령어가 있는데, 왜 굳이 while 명령어가 필요하지?’라는 생각이 들 수 있습니다. 하지만 while 명령이 더 유용할 때가 있습니다. 지금부터 그 예를 살펴 보겠습니다.
이번에 만들 프로그램은 컴퓨터가 1~30 사이에 있는 숫자를 하나 뽑으면 사용자가 그 숫자가 무엇인지 맞히는 게임입니다. 사용자가 추측해서 입력한 숫자가 컴퓨터가 생각한 숫자와 같으면 ‘정답’이라고 알린 뒤 프로그램을 종료하고, 다르면 더 큰지 작은지를 알려줘 사용자가 숫자를 맞힐 수 있게 힌트를 주는 것입니다.