プログラミングには、勉強用によく使われる問題がいくつか存在しています。
その中でも有名なFizzBuzzについてこの記事では解説していきます。
FizzBuzzの解き方を知りたい人やプログラムの基本的な組み立て方を押さえたい方は読んでみてください。
FizzBuzz問題内容
1~100まで順に値を出力せよ。
ただし、その数が3倍数であればFizz,5の倍数であればBuzzを出力し、15の倍数であればFizzBuzzと出力せよ。
(例)1,2,Fizz,4,buzz,fizz,7…
Fizzbuzzの解き方
まず最初に、この問題を解くのに必要なパーツは何かを考えていきましょう。
必要なのは、以下の2つだと思います。
- 1~100のループ
- 文字列を出力するときの分岐処理
1~100のループ
1~100のループは、for文とrange(1, 101)で実装可能です。
rangeの引数はstart,stopで、1スタートで101になったらstopとなるので、1~100を表します。
rangeの細かい仕様に関しては、こちらのrange記事を参考にしてみてください。
文字列を出力するときの分岐処理
今回発生する分岐は以下です。
- 3の倍数
- 5の倍数
- 15の倍数
- それ以外
倍数の判定は、その数で割った余りが0であるかどうかで判定が可能です。
分岐の順番に関しても考慮する必要があり、15の倍数の倍数の判定を最初に持ってくるようにしましょう。3の倍数、5の倍数の条件を上に持ってきてしまうと、15の倍数の判定が通らなくなってしまいます。
FizzBuzzのサンプルコード
一番基本的な形
解説の通りに実装したコードです。
少し手を加えた形
elifを使うと前の条件がそれ以降の条件に影響を与えて、読み辛くなってしまいます。そのため、elifを使わずにifで実装する方法を紹介します。
出力用変数の生成と出力部が分かれ、やりたいことがわかりやすくなりました。
おまけで、条件句に0や空文字を入れるとFalseになることを利用して、==等を省略しています。
FizzBuzzまとめ
FizzBuzzの解き方について解説してみました。
プログラミングの基礎が詰まった良問なので、ぜひ抑えてみて下さい。
コメント