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 출력 elif 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도 매우 빨라졌으므로 사소한 부분에 신경쓰기 보다는 가독성을 높이는 쪽으로 코드를 작성합니다.
읽기 쉽고 이해하기 쉬운 코드를 가독성이 좋다고 말합니다. 코드를 복잡하게 작성할수록 프로그래밍 실력이 뛰어나다고 착각하기 쉽지만 정반대입니다. 즉, 복잡한 로직을 간단하고 쉽게 작성할 수록 프로그래밍 실력이 뛰어나다고 할 수 있습니다.
프로그래밍은 만드는 것으로 끝나지 않고, 항상 유지보수가 뒤따릅니다. 특히 규모가 큰 프로젝트는 여러 사람이 협업하여 기능을 만들고 내가 작성한 코드를 다른 사람이 수정하거나, 내가 다른 사람의 코드를 수정하기도 합니다(실무에서는 내가 다른 사람의 코드를 수정해야 하는 일이 대부분입니다). 따라서 다른 사람이 내 코드를 유지보수하기 쉽도록 코드를 작성해야 하고, 내가 만든 코드를 나중에 내가 봤을 때도 이해하기 쉽도록 작성해야 합니다.