はじめに
FizzBuzz は、プログラミング初心者が条件分岐やループ処理を学ぶのに最適な問題の一つです。
本記事では、Python を使って FizzBuzz を実装し、そのコードの流れや仕組みを詳しく解説します。
実際に動作させる手順も紹介するので、Python に触れたばかりの方でも理解しやすい内容になっています。
書こうと思ったきっかけ
Python といったプログラミングの学習を始めるまで、条件分岐やループを使いこなすには、シンプルながらも簡単なプログラムを作ってみるのがお勧めです。
今回は、その中で代表的な FizzBuzz について、Python を使って実装し、処理の流れなどを整理していきます。
この内容については、自分自身の振り返りの意味を込めて、走り書きのメモ程度となりますが、ご容赦ください。
完成したコード
1から100までの数を順に表示し、3の倍数のときは"Fizz"、5の倍数のときは"Buzz"、両方の倍数のときは"FizzBuzz"と表示します。
for i in range(1, 101):
if i % 3 == 0 and i % 5 == 0:
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)
コードの流れ
-
1
から100
までの数値を順に処理 -
i
が15
の倍数なら"FizzBuzz"
を出力 -
i
が3
の倍数なら"Fizz"
を出力 -
i
が5
の倍数なら"Buzz"
を出力 - それ以外の
i
はそのまま出力
実際に実行してみる
まず、以下のコマンドを実行して FizzBuzz の動作を確認します。
python test.py
実行結果
プログラムを実行すると、1 から 100 までの数が順に出力され、ルールに従って "Fizz" や "Buzz" が表示されます。
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
・・・(省略)
89
FizzBuzz
91
92
Fizz
94
Buzz
Fizz
97
98
Fizz
Buzz
コードの解説
1. ループ処理
for i in range(1, 101):
-
range(1, 101)
は 1 から 100 までの整数を順番に取得する。(101 は含まれない) -
for
ループを使い、i
に 1 から 100 までの値を順番に代入し、以下の処理を繰り返す。
2. 15 の倍数(FizzBuzz)
if i % 3 == 0 and i % 5 == 0:
print("FizzBuzz")
-
i % 3 == 0
→i
が 3 の倍数であるかを判定 -
i % 5 == 0
→i
が 5 の倍数であるかを判定 - 両方の条件を満たす場合(15 の倍数のとき)、
"FizzBuzz"
を出力
例:
-
i = 15
→15 % 3 == 0
かつ15 % 5 == 0
→"FizzBuzz"
-
i = 30
→30 % 3 == 0
かつ30 % 5 == 0
→"FizzBuzz"
3. 3 の倍数(Fizz)
elif i % 3 == 0:
print("Fizz")
-
i % 3 == 0
のとき"Fizz"
を出力 -
i % 5 == 0
がFalse
の場合のみこの処理が実行される(つまり 15 の倍数は"FizzBuzz"
で処理される)
例:
-
i = 3
→3 % 3 == 0
→"Fizz"
-
i = 6
→6 % 3 == 0
→"Fizz"
4. 5 の倍数(Buzz)
elif i % 5 == 0:
print("Buzz")
-
i % 5 == 0
のとき"Buzz"
を出力 -
i % 3 == 0
がFalse
の場合のみこの処理が実行される(つまり 15 の倍数は"FizzBuzz"
で処理される)
例:
-
i = 5
→5 % 5 == 0
→"Buzz"
-
i = 10
→10 % 5 == 0
→"Buzz"
5. それ以外(そのまま数値を出力)
else:
print(i)
- 上記のどの条件にも当てはまらない場合、そのまま
i
を出力
例:
-
i = 1
→1 % 3 != 0
かつ1 % 5 != 0
→1
-
i = 2
→2 % 3 != 0
かつ2 % 5 != 0
→2
まとめ
ここまで読んでいただきありがとうございました。今回の内容は基本的な部分でしたが、私自身も条件分岐や繰り返しを振り返ることができました。
今後もこのような基礎的な部分については丁寧にまとめていこうと思っています。