3
2

問題

  • 整数 N が入力として与えられます。
    1からNまでの整数を1から順に表示してください。

  • ただし、表示しようとしている数値が、

  1. 3の倍数かつ5の倍数のときには、"Fizz Buzz"
  2. 3の倍数のときには、"Fizz"
  3. 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 = []のリストへ

  1. 3の倍数かつ5の倍数のときには、"Fizz Buzz"
  2. 3の倍数のときには、"Fizz"
  3. 5の倍数のときには、"Buzz"
  4. 3の倍数、5の倍数以外は数値

を追加して、
for文を用いて出力していきます。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2