logo태영이의 공부방

[파이썬 코딩 도장] Unit 20 문제 풀이

2022년 01월 15일

20.7 연습 문제

다음 소스 코드를 완성하여 1부터 100까지의 숫자를 출력하면서 2의 배수일 때는 'Fizz',

11의 배수일 때는 'Buzz', 2과 11의 공배수일 때는 'FizzBuzz'가 출력되게 만드세요.

for i in range(1, 101):
    if 1._________________________:
        print('FizzBuzz')
    elif 2.___________:
        print('Fizz')
    elif 3.___________:
        print('Buzz')
    else:
        print(i)

풀이

# 1
i % 2 == 0 and i % 11 == 0
# 2
i % 2 == 0
# 3
i % 11 == 0

공배수 같은 경우 논리 연산자 사용 대신 i % 22 == 0 이런식으로 최소 공배수를 직접 구해 쓸 수 있다.

하지만 실무에선 논리 연산자를 사용한 조건처럼 의미를 명확하게 밝히는게 좋다고 한다.

그 편이 가독성이 좋아져 읽기 쉽고 이해하기 쉽기 때문이다.

20.8 심사 문제

표준 입력으로 정수 두 개가 입력됩니다.

(첫 번째 입력 값의 범위는 11000, 두 번째 입력 값의 범위는 101000이며 첫 번째 입력 값은 두 번째 입력 값보다 항상 작습니다)

첫 번째 정수부터 두 번째 정수까지 숫자를 출력하면서 5의 배수일 때는 'Fizz',

7의 배수일 때는 'Buzz', 5와 7의 공배수일 때는 'FizzBuzz'를 출력하는 프로그램을 만드세요.

(input에서 안내 문자열은 출력하지 않아야 합니다)

# 입력 : 35 40
# 결과 : 
# FizzBuzz
# 36
# 37
# 38
# 39
# Fizz

풀이

x, y = map(int, input().split())
for i in range(x, y + 1):
  if i % 5 == 0 and i % 7 == 0:
    print('FizzBuzz')
  elif i % 5 == 0:
    print('Fizz')
  elif i % 7 == 0:
    print('Buzz')
  else:
    print(i)
 
# 단축
for i in range(x, y + 1):
    print('Fizz' * (i % 5 == 0) + 'Buzz' * (i % 7 == 0) or i)

이 게시물은 파이썬 코딩 도장 사이트를 참고하였습니다.