PythonでFizzBuzzを書く

ルール

改行区切りで1から100まで出力する。
3の倍数は「Fizz」、5の倍数は「Buzz」、3と5の倍数は「FizzBuzz」で置き換える。

条件分岐を使って書く

if文を使って素直に実装します。

# coding: utf-8

for i in range(1, 101):
    if i%15 == 0:
        print('FizzBuzz')
    elif i%3 == 0:
        print('Fizz')
    elif i%5 == 0:
        print('Buzz')
    else:
        print(i)

リスト内包を使う

ロジックは同じですが、リスト内包の記法を使うとワンライナーで書くことができます。

# coding: utf-8

for _ in ['FizzBuzz' if i%15==0 else 'Fizz' if i%3==0 else 'Buzz' if i%5==0 else i for i in range(1, 101)]: print(_)

lambdaを使う

map(function, iterable, ...)を利用して、リスト要素に対して順に演算を適用することができます。

'\n'.join(リスト要素)としてあげることで、要素の区切りを改行に変更することができます(デフォルトは半角スペース)。 この場合は数値をstr()メソッドで文字列に変換してあげないとエラーになります。

# coding: utf-8

print('\n'.join(list(map(lambda x: 'fizzbuzz' if x%15==0 else 'fizz' if x%3==0 else 'buzz' if x%5==0 else str(x), [x for x in range(1, 101)]))))

実行環境

Python 3.7.0