PythonでFizzBuzz問題を解いてみる
どうしてプログラマに・・・プログラムが書けないのか?というページに、Fizz-Buzz問題というのがあったので、初心者の自分に解けるかPythonでコードを書いてみた。
3ヶ月ほど前からプログラミングを勉強しはじめて、いまは色々な言語(の初歩の初歩レベル)をつまみながら勉強しているのですが、そのとっかかりとして一番最初に学んだのがPythonだったので、Pythonでやります! (てへ
設問は以下の通り↓
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
脳みそフル稼働させて考えて・・・
- 3の倍数は3で割り切れる数だ。
- 5の倍数は5で割り切れる数だ。
- 3と5の両方の倍数は、3で割り切れ、かつ5でも割り切れる数だ。
それをコードにすると・・・
for i in range(1,101): if(i % 3 == 0 and i % 5 != 0): # 3で割り切れるが5で割り切れない print("Fizz") elif(i % 5 == 0 and i % 3 != 0): # 5で割り切れるが3で割り切れない print("Buzz") elif(i % 3 == 0 and i % 5 == 0): # 3で割り切れ、かつ5で割り切れる print("FizzBuzz") else: print(i)
(i % 3 == 0 and i % 5 == 0)は、3と5の最小公倍数15を使って(i % 15 == 0)としてもいいでしょうか。
今回は頭に思い浮かんだコードをそのまま直にPythonで書いてみました。
でもたぶんもっと短くエレガントに書くやり方が他にあるはず!