업데이트:

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 심사 문제 :

표준 입력으로 정수 두 개가 입력됩니다.
(첫 번째 입력 값의 범위는 1~1000, 두 번째 입력 값의 범위는 10~1000이며 첫 번째 입력 값은 두 번째 입력 값보다 항상 작습니다)
첫 번째 정수부터 두 번째 정수까지 숫자를 출력하면서 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)

Notice: 이 게시물은 파이썬 코딩 도장 사이트를 참고하였습니다. https://dojang.io/course/view.php?id=7

댓글남기기