FizzBuzzとの3か月(12)
お世話になっております。
今日は台風の影響により、電車の運行が止まっていました。
差し迫った用事もなかったので、休暇にしてしまいました。
さて、今日もPythonによるFizzBuzz実装ですが、昨日までとは方向を変更し、ワンライナーに挑戦してみました。
影響を受けたのはこちらの記事です。
FizzBuzz>それLINQで>それワンライナーで - まさるDiary
以下、コードです。
print(str(['FizzBuzz' if x % 3 == 0 and x % 5 == 0 else 'Fizz' if x % 3 == 0 else 'Buzz' if x % 5 == 0 else x for x in range(1, 101)]).strip('[]').replace('\'', '').replace(' ', '').replace(',','\r\n'))
大きく分けると、3つの処理からできています。
2番目の文字列操作の部分が、あまりにも見苦しいです。
遊びで書く分には楽しくていいのですが、業務でこういうコードを見ると削除したくなります。
もう少しわかりやすく書くと、以下のようになります。
for x in [ 'FizzBuzz' if i % 3 == 0 and i % 5 == 0 else 'Fizz' if i % 3 == 0 else 'Buzz' if i % 5 == 0 else i for i in range(1, 101) ]: print(x)
こちらは無駄な文字列処理もなく、シンプルになりました。
以上