-규칙
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')와 조건식을 곱해서 조건식이 참일경우 문자가 출력되고, 거짓일 경우엔 출력되지 않는다.
이 원리를 이용해서 위 코드를 작성할 수 있다.