質問: python初心者です。 以下のfizzbuzzのコードで ``` print("\n".join(["Fizz"*(i%3==0)+"Buzz"*(i%5==0) or str(i) for i in range(1,100)])) ``` "Fizz"*(i%3==0) このコードはどういった意味なのでしょうか?
回答: Pythonのbool型(真偽値型)の正体は整数型です。 > > 数値処理のコンテキスト (例えば算術演算子の引数として使われた場合) では、これらはそれぞれ 0 および 1 と同様に振舞います。 > > > もう一つ。文字列型は`*`演算子での繰り返しのシーケンス演算ができます。 > > s * n または n * s s 自身を n 回足すのと同じ > > > 以上から、 `"Fizz"*(i%3==0)`は、 * `i%3==0`が真の時は`"Fizz"*1`を計算して`"Fizz"`となる * `i%3==0`が偽の時は`"Fizz"*0`を計算して`""`(空文字)となる という式です。