スポンサーリンク

【駆け出しエンジニア向け】PythonでFizzBuzz問題をやってみよう!

FizzBuzz

Pythonを使ってFizzBuzz問題をやってみたいと思います。

Pythonの勉強してるけどどれくらい上達できているのかな?

それならFizzBuzz問題を解いてみるといいよ

FizzBuzz問題?

FizzBuzz問題とは、1から100までの数を出力していき、3の倍数のときは数の代わりに「Fizz」、5の倍数のときは「Buzz」と出力し、3と5両方の倍数の場合には「FizzBuzz」と出力するプログラム問題のことです。

どんな言語であってもプログラマーの方であればやったことがある超有名問題なので、最近Pythonの勉強を始めたという方はぜひ挑戦してみてください!

まずはPythonが実行できる環境を整えましょう。

 

ローカル環境で実行できる方はそちらで構いませんし、環境開発がめんどくさいという方はこちらのサイトでコードを実行することができます。

FizzBuzz問題の出力結果

FizzBuzz問題の出力結果を先に提示いたしますので、こんな風に出力できていれば正解です!

 

ちなみに解き方はたくさんありますので、いろんな方法で解いてみると面白いですよ♪

 

出力例
[1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'FizzBuzz', 16, 17, 'Fizz', 19, 'Buzz', 'Fizz', 22, 23, 'Fizz', 'Buzz', 26, 'Fizz', 28, 29, 'FizzBuzz', 31, 32, 'Fizz', 34, 'Buzz', 'Fizz', 37, 38, 'Fizz', 'Buzz', 41, 'Fizz', 43, 44, 'FizzBuzz', 46, 47, 'Fizz', 49, 'Buzz', 'Fizz', 52, 53, 'Fizz', 'Buzz', 56, 'Fizz', 58, 59, 'FizzBuzz', 61, 62, 'Fizz', 64, 'Buzz', 'Fizz', 67, 68, 'Fizz', 'Buzz', 71, 'Fizz', 73, 74, 'FizzBuzz', 76, 77, 'Fizz', 79, 'Buzz', 'Fizz', 82, 83, 'Fizz', 'Buzz', 86, 'Fizz', 88, 89, 'FizzBuzz', 91, 92, 'Fizz', 94, 'Buzz', 'Fizz', 97, 98, 'Fizz', 'Buzz']
出力例はリスト型で出力していますが、出力の型は何でも構いません。

FizzBuzz問題の解答例:基本編

Pythonを使ってFizzBuzz問題を解く方法はたくさんありますのでそのうちのいくつかをご紹介します。

そのまま出力する

一番簡単な方法で、Pythonでif文とprintが書ければ出力が可能です。
for i in range(1, 101):
    if i % 15 == 0:
        print("FizzBuzz")
    elif i % 5 == 0:
        print("Buzz")
    elif i % 3 == 0:
        print("Fizz")
    else:
        print(str(i))

出力結果をリスト型に格納して出力する

結果をリスト型に格納していき最後にリストを出力する方法です。

リスト型への追加ができるかがポイントになります。
l = []

for i in range(1, 101):
    if i % 15 == 0:
        l.append("FizzBuzz")
    elif i % 5 == 0:
        l.append("Buzz")
    elif i % 3 == 0:
        l.append("Fizz")
    else:
        l.append(str(i))

print(l)

出力結果を辞書型に格納して出力する

結果を辞書型に格納して最後に辞書を出力する方法です。

 

辞書に出力結果を追加できるかがポイントになります。
d = {}

for i in range(1, 101):
    if i % 15 == 0:
d[i] = "FizzBuzz"
    elif i % 5 == 0:
d[i] = "Buzz"
    elif i % 3 == 0:
d[i] = "Fizz"
    else:
d[i] = str(i)

print(d)

FizzBuzz問題の解答例:応用編

基本編ではPythonの基本的な文法を理解していたら解けるように設定しましたが、ここからは少し応用編で、Pythonを学び始めた方はこんな書き方あるんだー程度に見てもらえると面白いかと思います!

関数化して出力する

1~100までの数字を関数の引数に渡してあげることで、その数字が3、5、15で割り切れるかどうか判別してもらう関数を作りその結果を出力する方法です。

for i in range(1, 101):
if i % 15 == 0:
    d[i] = "FizzBuzz"
elif i % 5 == 0:
    d[i] = "Buzz"
elif i % 3 == 0:
    d[i] = "Fizz"
else:
    d[i] = str(i)

ラムダ関数を利用して出力する

ラムダ関数を利用してFizzBuzzを判別して出力する方法です。

FizzBuzzChack = lambda i: "FizzBuzz" if i % 15 == 0 else "Buzz" if i % 5 == 0 else "Fizz" if i % 3 == 0 else str(i)

for i in range(1, 101):
    print(FizzBuzzChack(i))

リスト内包表記を利用して出力する

リスト内包表記でFizzBuzzを判別して出力する方法です。

FizzBuzzChack = ["FizzBuzz" if i % 15 == 0 else "Buzz" if i % 5 == 0 else "Fizz" if i % 3 == 0 else str(i) for i in range(1, 101)]

print(FizzBuzzChack)

さいごに


FizzBuzz問題を様々な方法で解いてみました。

FizzBuzz問題はプログラミングを勉強し始めた方にはちょうどいい難易度の問題ですので、今持っている知識をフル活用していろいろな解き方を試してみてください!

もちろん本記事でご紹介した解き方以外にもたくさんの解き方がありますので、こういう解き方はどうですかなどのコメントを投稿してもらえると嬉しいです♪

コメント