FizzBuzz問題はコーディング初心者向けの問題として有名です。
条件分岐の練習で、以下のようなコードが一般的な正解かと思います。
def fizzbuzz(n):
for i in range(1, n):
if i % 15 == 0: # 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)
fizzbuzz(100)
ですが、ある方が紹介していた方法でカッコイイ書き方があったのでメモ。
def fizzbuzz(n):
for i in range(1, n):
result = ""
if i % 3 == 0:
result += "Fizz"
if i % 5 == 0:
result += "Buzz"
print(result or i)
fizzbuzz(100)
カッコイイですね。
なぜ、この書き方が機能するのか?
ポイントは result 変数を使って、 FizzBuzz の場合も Fizz の場合も Buzz の場合にも対応できるという事。
更に3でも5でも割り切れない場合は result 変数が更新されない("")のままである。
"" は論理演算では False と同意となる。
これを利用すると、result 側が "" 以外であれば resultが出力され、result側が "" であれば i の値を出力する事になる。
なんと素晴らしい論理演算の使い方。。。
実戦ではこうやって上手く論理演算を使っていきたいですね。
忘れた時にこの記事を見返して思い出します。
以上