17.5 연습문제: 변수 두 개를 다르게 반복하기

다음 소스 코드를 완성하여 정수 2 5, 4 4, 8 3, 16 2, 32 1이 각 줄에 출력되게 만드세요. while에 조건식은 두 개 지정하고, 두 변수를 모두 변화시켜야 합니다.

practice_while.py

i = 2
j = 5

            or        
    print(i, j)
           
           

실행 결과

2 5
4 4
8 3
16 2
32 1

정답

 while i <= 32 or j >= 1:
 i *= 2
 j -= 1

해설

출력된 숫자의 규칙을 살펴보면 첫 번째 숫자는 2부터 크기가 두 배씩 늘어나서 32까지 출력되고, 두 번째 숫자는 5부터 1씩 줄어들어서 1까지 출력됩니다. 따라서 while 반복문 안에서 반복할 때마다 변수 i는 2배씩 만들고, j는 1씩 감소시킵니다.

먼저 i는 32까지 출력하고, j는 1까지 출력해야 하므로 while에 조건식을 i <= 32 or j >= 1과 같이 지정합니다. 사실 여기서는 ij 모두 다섯 번씩 반복하므로 i <= 32만 지정하거나 j >= 1만 지정해도 상관없습니다. 또는, i <= 32 and j >= 1와 같이 and 연산자를 사용해도 결과는 같습니다. 이런 조건식은 각 상황에 맞게 지정해주면 됩니다.

그리고 반복문 안에서는 i *= 2i가 두 배씩 늘어나도록 만들고, j -= 1j가 1씩 줄어들게 만들면 됩니다.