問題
-
整数 N が入力として与えられます。
1からNまでの整数を1から順に表示してください。 -
ただし、表示しようとしている数値が、
- 3の倍数かつ5の倍数のときには、"Fizz Buzz"
- 3の倍数のときには、"Fizz"
- 5の倍数のときには、"Buzz"
を数値の代わりに表示してください。
N = int(input())
for i in range(1, N + 1):
#3の倍数かつ5の倍数(15の倍数)のとき
if i % 3 == i % 5 == 0:
print("Fizz Buzz")
#3の倍数のときには、"Fizz"
elif i % 3 == 0:
print("Fizz")
#5の倍数のときには、"Buzz"
elif i % 5 == 0:
print("Buzz")
#3の倍数、5の倍数、15の倍数以外のときには、数字を出力
else:
print(i)
- i % 3 == i % 5 == 0 は「i を 3 で割った余りと i を 5 で割った余りが共通して 0 である」という条件式です。
15の倍数とすることも可能です。
- i % 3 == i % 5 == 0 の条件式は最初に置く必要があることに注意してください。
たとえば、この条件式が i % 3 == 0 の後の elif 節にある場合、
3 の倍数はすべて i % 3 == 0 で引っかかってしまいます。
そのため、i % 3 == i % 5 == 0 内の処理がおこなわれなくなってしまいます。
リストを用いた解答例
N = int(input())
def is_FizzBuzz(num):
return (num % 3 == 0, num % 5 == 0)
results = []
for i in range(1, N + 1):
Fizz, Buzz = is_FizzBuzz(i)
if Fizz and Buzz:
results.append("Fizz Buzz")
elif Fizz:
results.append("Fizz")
elif Buzz:
results.append("Buzz")
else:
results.append(i)
for result in results:
print(result)
results = []のリストへ
- 3の倍数かつ5の倍数のときには、"Fizz Buzz"
- 3の倍数のときには、"Fizz"
- 5の倍数のときには、"Buzz"
- 3の倍数、5の倍数以外は数値
を追加して、
for文を用いて出力していきます。