python FizzBuzz문제

yo·2020년 5월 4일
0

-규칙
1) 1~100 출력
2) 3의 배수는 Fizz출력
3) 5의 배수는 Buzz출력
4) 3,5의 공배수는 FizzBuzz출력

풀이
1) 1~100을 출력하기

for i in range(1,101):
    print(i)

(전체풀이)

for i in range(1,101):
    if i % 3 == 0 and i % 5 ==0:
        print("FizzBuzz")
    elif i % 5 == 0:
        print("Buzz")
    elif i % 3 == 0:
        print("Fizz")
    else:
        print(i)

혹은 3과 5의 공배수인 15로 계산해도 된다.

for i in range(1,101):
    if i % 15 == 0:
        print("FizzBuzz")
    elif i % 5 == 0:
        print("Buzz")
    elif i % 3 == 0:
        print("Fizz")
    else:
        print(i)

하지만 아래코드처음 3,5의 공배수를 구하는 코드가 아래로 가면 3,5의 공배수를 잡아내지 못해 원하는 결과를 얻지 못한다.

for i in range(1,101):
    if i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    elif i % 3 == 0 and i % 5 ==0:
        print("FizzBuzz")
    else:
        print(i)

코드 단축하기

위의 FizzBuzz문제를 아래 코드로 줄일 수 있다.

for i in range(1,101):
    print('Fizz' * (i % 3 ==0) + 'Buzz' * (i%5 == 0) or i)

설명:
문자(위 예시에선 'Fizz'혹은 'Buzz')와 조건식을 곱해서 조건식이 참일경우 문자가 출력되고, 거짓일 경우엔 출력되지 않는다.
이 원리를 이용해서 위 코드를 작성할 수 있다.

profile
Never stop asking why

0개의 댓글