Pythonの基本的な内容をこれまで触れてきました。もちろん、もっともっと学ぶべきことはありますが、とりあえず入門編として扱える内容は一通り触れられているのではないかと思います。
ここで入門編は一区切りとして、応用・実践的な内容へとどんどん進んで行かなくてはいけません。
ですが、その前に入門編のまとめではないですが、ちょっと問題を解いてみたいとおもいます。
FizzBuzz問題を解いてみましょう。
FizzBuzz問題とは?
FizzBuzz問題(FizzBuzz Question) はプログラマー向けの質問サイト、スタックオーバーフローの共同経営者であるJeff Atwoodが提唱したもので、プログラミングへの応募者にこの問題を使ってコードが書けないプログラマ志願者を見分ける手法です。
多くの人はこのコードをなかなか書けないそうです。まあ、今は有名になってるでしょうから知識のある人は多いでしょうけどね。
コードを書くときに、いろんな制約をつけて腕試しする人もいるようですね。
FizzBuzz問題のルール
ではFizzBuzz問題を解いてみましょう。
次のルールでFIzzBuzz問題のコードを書いてみましょう。
1から100までの数字を出力するプログラミングを書いてください。ただし、数字が3の倍数の時は数字の代わりにFizzと出力し、5の倍数の時は数字の代わりにBuzzと出力し、3と5の倍数のときは、FizzBuzzと出力すること。
特に時間制限も、コード上の制限も設けないので実際にコードを作成してみましょう。
FizzBuzz問題のコードを書いてみる
では、FizzBuzz問題のコードを実際に作って行きましょう。
FizzBuzz問題を読むと、出力結果はこんな風になればいいということですね。
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
…
3の倍数、5の倍数、3と5の倍数がわからないとちょっとどうしようもないですね。もし、そうなら数学の基礎の基礎(算数かな?)を復習してください。
ではPythonでコードを書いていきましょう。
3の倍数をどう求めて書くか、5の倍数をどう求めて書くか、3と5の倍数をどう求めて書くかが条件ですね。あと、1から100までの数字を表示する。
こんなコードが書けるはずです。
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)
まず、range()関数を使って1から100の数字を取り出し、forループ文で繰り返し表示をします。
その取り出した数字を3の倍数、5の倍数、3と5の倍数で判定します。倍数とは、その数字で割った余りが0になるものですから、%を使ってそれぞれ計算します。
ここで注意が必要なのは判定する順番です。まず3と5の倍数から判定しないと、間違った結果になります。そのあたりに気をつけて、if-elif-else文で振り分けてprint文で出力しています。
コードを実行するとこうなります。(ファイル名をfizzbuzz.pyで、Atomで実行しています)
(途中省略)
さて、コードは書けましたかね?
このコードはスタンダードな1例になると思いますが、別の方法は各自いろいろ研究してみてください。
まとめ
Python入門編として学んできた最後に、FizzBuzz問題を解いてみました。
FizzBuzz問題はJeff Atwoodが提唱したプログラマ志願者がコードが書けるかどうかを見分ける手法で、プログラマーの合格、不合格を振り分けるのに使われました。
ここでは実際にFizzBuzz問題のコードを書いてみましたが、標準的な1例ですが、色々研究して他の書き方もやってみましょう。
入門編をしっかりマスターしたあとは、応用編など実践的な学習に移りましょう。