Pythonでfizzbuzz ******************* Contents: .. contents:: .. toctree:: :maxdepth: 1 for文を使った例 -------------------- .. literalinclude:: Src/fizzbuzz.py :language: python :linenos: ジェネレータを使う ----------------------- 無限に値を生成するなら、 .. literalinclude:: Src/fizzbuzz_gen.py :language: python :linenos: 上限を設けるならこう。 .. literalinclude:: Src/fizzbuzz_gen2.py :language: python :linenos: FizzBuzzだとあまり違いは見えないけれど、使い方は違う。 文字列を使う -------------------- Pythonでは文字 * 数値で文字列を生成できる :: >>> "a" * 3 'aaa' それぞれ、以下のような定義であるため True/Falseをかけると字が表示される/されない :: >>> False == 0 True >>> True == 1 True >>> "a" * True 'a' >>> "a" * False '' なのでこういうのもあり。 .. literalinclude:: Src/fizzbuzz_str.py :language: python :linenos: 内包リスト ----------------- 内包リストでできるか考える。 まず、内包リストによって、以下のように数字は列挙可能。 :: >>> print "\n".join(str(c) for c in range(1,3)) 1 2 (rangeのmax-1までしか出ない) ここで、文字列に対する論理演算を利用する。 (結果論から使っているだけですが、Pythonの仕様なんでしたっけ?) :: >>> "a" or "b" 'a' >>> "a" and "b" 'b' >>> "" or "b" 'b' >>> "" and "b" '' となるのを利用して、以下の通りになる。 .. literalinclude:: Src/fizzbuzz_lamda.py :language: python :linenos: