18.5 연습문제: 3으로 끝나는 숫자만 출력하기
다음 소스 코드를 완성하여 0과 73 사이의 숫자 중 3으로 끝나는 숫자만 출력되게 만드세요.
practice_number_ending_3.py
i = 0 while True: ① ② print(i, end=' ') i += 1
실행 결과
3 13 23 33 43 53 63 73
정답
① if i % 10 != 3: i += 1 continue ② if i > 73: break
해설
while 반복문에서 print로 i의 값을 출력한 뒤 i를 1씩 증가시키고 있습니다. 따라서 print 함수 윗부분의 코드를 완성하여 3으로 끝나는 숫자를 출력해야 합니다.
먼저 3으로 끝나는 숫자를 구하려면 i를 10으로 나눈 뒤 나머지가 3인지 검사하면 됩니다. 하지만 if i % 10 == 3:에서 i를 출력하더라도 그 아래에 있는 print에서도 i를 출력하므로 원하는 결과가 나오지 않게 됩니다. 따라서 아래에 있는 print에서 i가 출력되지 않도록 continue로 코드를 건너뛰어야 합니다.
3으로 끝나는 숫자만 출력되도록 하려면 if i % 10 != 3:과 같이 if 조건문을 만들어서 3으로 끝나지 않는 숫자일 때 continue로 건너뜁니다. 이렇게 하면 그 아래에 있는 print에서 3으로 끝나는 숫자만 출력할 수 있습니다. 그리고 continue로 코드를 건너뛰면 아래에 있는 i += 1까지 건너뛰게 되므로 continue 위에 i += 1을 넣어주어야 합니다.
그리고 while 반복문에 True가 지정되어 있으므로 무한 루프입니다. 따라서 if 조건문을 사용하여 i가 73보다 클 때 break로 루프를 중단해줍니다. 여기서는 숫자를 출력하는 print가 아래에 있으므로 i가 73과 같을 때 break로 중단해버리면 73은 출력되지 않습니다(73을 출력하기 전에 break로 루프가 중단됨). 그러므로 73까지 출력하려면 i가 73일 때는 그냥 넘어가고 루프를 한 번 더 실행하여 i가 73보다 클 때 루프를 중단하는 것입니다.