ルール
改行区切りで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