Page 16 -
P. 16

18.3  3과 5의 공배수 처리하기



                   3의 배수와 5의 배수는 출력했지만 3과 5의 공배수를 출력하지는 못했습니다. 3과 5의 공배수
                   는 어떻게 출력해야 할까요? 공배수는 다음과 같이 논리 연산자 and를 사용하면 됩니다.

                     fizzbuzz.py
                     for i in range(1, 101):              # 1부터 100까지 100번 반복
                         if i % 3 = = 0 and i % 5 = = 0:    # 3과 5의 공배수일 때
                             print('FizzBuzz')            # FizzBuzz 출력
                         if i % 3 = = 0:                   # 3의 배수일 때
                             print('Fizz')                # Fizz 출력
                         elif i % 5 = = 0:                 # 5의 배수일 때
                             print('Buzz')                # Buzz 출력
                         else:
                             print(i)                     # 아무것도 해당되지 않을 때 숫자 출력

                     실행 결과
                     ... (생략)
                     FizzBuzz
                     91
                     92
                     Fizz
                     94
                     Buzz
                     Fizz
                     97
                     98
                     Fizz
                     Buzz


                   i % 3 = = 0 and i % 5 = = 0처럼 i를 3으로 나눴을 때 나머지가 0이면서 5로 나눴을 때도
                   나머지가 0이면 3과 5의 공배수입니다. 그러므로 이때는 print로 'FizzBuzz'를 출력해줍니다.


                   만약 i가 30인데 if에서 3의 배수를 먼저 검사하면 3과 5의 공배수는 검사를 하지 않고 그냥
                   넘어가 버리므로 주의해야 합니다. 따라서 3과 5의 공배수를 먼저 검사한 뒤 elif로 3의 배수,
                   5의 배수를 검사해야 합니다.


                     fizzbuzz.py
                     if i % 3 = = 0:                     # i가 30이면
                         print('Fizz')                  # Fizz를 출력하고 그냥 넘어가 버림
                     elif i % 5 = = 0:
                         print('Buzz')
                     elif i % 3 = = 0 and i % 5 = = 0:    # 3과 5의 공배수는 검사하지 못함
                         print('FizzBuzz')
                     else:
                         print(i)


             148  프로그래머를 향한 출발점 COS Pro 2급




         cos 파이썬_07.indd   148                                                                      2018-02-05   오후 4:03:57
   11   12   13   14   15   16   17   18   19