Page 17 -
P. 17
18.4 논리 연산자를 사용하지 않고 3과 5의 공배수 처리하기
논리 연산자 and를 사용하지 않고 3과 5의 공배수를 검사하려면 어떻게 해야 할까요? 3 *
5 = 15는 3과 5의 최소공배수이므로 15로 나눴을 때 나머지가 0인 값들은 3과 5의 공배수
입니다.
fizzbuzz_without_logical_operator.py
for i in range(1, 101): # 1부터 100까지 100번 반복
if i % 15 = = 0: # 15의 배수(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를 15로 나눴을 때 나머지를 구하여 3과 5의 공배수를 구했습니다. 이때는 15라는 숫자 안에
3과 5의 최소공배수라는 뜻이 숨어 있습니다. 따라서 주석에 적절한 설명이 없다면 코드를 읽
는 사람이 15의 속뜻을 알아내야 합니다.
FizzBuzz는 문제가 간단해서 15가 3과 5의 최소공배수라는 것을 쉽게 알 수 있습니다. 하지만
실무에서는 값의 속뜻을 최대한 줄여서 i % 3 = = 0 and i % 5 = = 0처럼 계산식과 논리
연산자를 사용하여 뜻을 명확하게 드러내는 것이 좋습니다.
요즘은 프로그래밍 언어의 성능도 좋아졌고, CPU도 매우 빨라졌으므로 사소한 부분에 신경쓰
기보다는 가독성을 높이는 쪽으로 코드를 작성합니다.
UNIT 18 FizzBuzz 149
cos 파이썬_07.indd 149 2018-02-05 오후 4:03:57