キレイにまとまっていると思います。次は、mapやスライスをつかったもっとPythonらしいコードを書きてみましょう。101))関数fizzbuzzを定義して、renge関数からの返り値のリストをmapする方式ですね。変数a,bは多値返却をつかって定義し、文字列FizzBuzzはスライスをつかって分解しました。スライスの値は三項演算子のPython版にあたる条件演算子をつかって計算しています。なんだか面白くなってきました。range(1,101)])リスト内包表記をつかってワンライナーで書いてみました。条件演算子内の演算は、integer型は0ではない数字がTrueとして扱われるので、先ほどのコードとは順番が逆になっています。Pythonでは、空文字列をBool型に型変換するとFalseになり、orの左辺がFalseだと右辺が返るという性質があるので、この場合str(i)が返ります。ここでstrに型変換しているのは、join関数はinteger型を混ぜるとエラーを吐くからです。なってくると、さっきまでなかった\nとかjoinとかstrとかが気になってしまいますね。iリスト内包表記へのこだわりを捨てました。キレイにロジックがだけのこったFizzBuzzなコードになったと思います。ここで、怖いもの見たさに最短のFizzBuzzを検索してみました。-~i...すごいですね。range(100)にすることにより、でi%3/2が、整数値/整数値=整数値を返すというPythonの仕様により、3おきに1を返すようになっています。これで、単純な演算だけでFizzBuzzしています。これを参考にして、bytes数の少ない新しいFizzBuzzを作ってみました。できるだけ予約後を使わないで、数値演算だけで、ロジックを組めるようにしました。-~iスライスの箱の前項はPythonの仕様上bit反転できないので、このような形になってしまいました。後項は返り値がどちらも4の倍数なので、条件演算と同時にそこで生じる1を有効利用する形にしました。おわりにPythonだとキレイに書くこともできるし、パズルっぽく書くこともできて面白いですね。最初は純粋にFizzBuzzを解くつもりでしたが、途中で目的が二転三転して、最終的には「最短のFizzBuzzに近づける」になっていた気がします。番外編lamdaを使ってワンライナーで見やすくなるかどうかを検証したものです。結果、普通に計算でなんとかする方がbyte数的にはいい結果になります。Pythonは、グローバルスコープと関数スコープしかないので、lamdaには変数iを渡さないでも勝手に計算してくれるので何やらむず痒いコードができます。