SimplePrograms - Python Wiki
https://wiki.python.org/moin/SimplePrograms
の 4番目のプログラムは、
parents, babies = (1, 1)
while babies < 100:
1行目の右側がタプルですので、これはタプルの代入に関する例ですね。試して見ましょう。
Pythonでは、"#"文字の後ろがコメント扱いだそうで、これを利用してみました。
>>> a = (1,2) # タプルをそのまま変数に代入できる。
>>> print(a)
(1, 2)
>>> b,c = a # タプルの各要素の値ををそれぞれ変数に代入できる
>>> print(b)
1
>>> print(c)
2
>>>
つまりタプルを変数に代入するときに、= の前にタプルの要素分の変数をカンマで区切って指定することができ、各変数にタプルのそれぞれの要素が代入されるようです。
2行目以降は forに代わる while ループを表すようで、while文と呼ぶようです。
https://docs.python.org/ja/3/reference/compound_stmts.html#while
while ループと言えば、その後は条件で、その条件を満たす間はループを繰り返すのが一般的ですが、pythonの場合も同様ですね。
条件の終わりは for と同様に 「:」 で示すようです。条件は一般的な表記と同じで babies が 100 より小さい場合はループを継続する、です。ループの中身がインデントする点は、forループと同じですね。
3行目の print()は、formatメソッドを利用していますが、置換フィールドとして数値を指定する例ですね。
おそらく複数の数値が使えて、formatメソッドの中のカンマで区切ったものの値に対応すると思われます。今回は babies の値だけなので {0} ですね。先頭が0番なのが python の標準のようです。
4行目もタプルを変数に代入する例で、今回のタプルはその場で作成しています。
babies と parents + babies の計算結果でタプルを新たに作成し、それを parents と babies に代入するということです。当然前の値はここで廃棄されるわけです。それで babies の値がどんどん増えるわけです。
実行結果はこんなかんじです。(例によって、while文の中のインデントはうまく表示されない可能性があるので、インデントがある前提でご覧下さい。)
>>> parents, babies = (1, 1)
>>> while babies < 100:
... print ('This generation has {0} babies'.format(babies))
... parents, babies = (babies, parents + babies)
...
This generation has 1 babies
This generation has 2 babies
This generation has 3 babies
This generation has 5 babies
This generation has 8 babies
This generation has 13 babies
This generation has 21 babies
This generation has 34 babies
This generation has 55 babies
This generation has 89 babies
>>>
つまりフィボナッチ数列の第2項目から11項目までです。
https://wiki.python.org/moin/SimplePrograms
の 4番目のプログラムは、
parents, babies = (1, 1)
while babies < 100:
print ('This generation has {0} babies'.format(babies))
parents, babies = (babies, parents + babies)
parents, babies = (babies, parents + babies)
1行目の右側がタプルですので、これはタプルの代入に関する例ですね。試して見ましょう。
Pythonでは、"#"文字の後ろがコメント扱いだそうで、これを利用してみました。
>>> a = (1,2) # タプルをそのまま変数に代入できる。
>>> print(a)
(1, 2)
>>> b,c = a # タプルの各要素の値ををそれぞれ変数に代入できる
>>> print(b)
1
>>> print(c)
2
>>>
つまりタプルを変数に代入するときに、= の前にタプルの要素分の変数をカンマで区切って指定することができ、各変数にタプルのそれぞれの要素が代入されるようです。
2行目以降は forに代わる while ループを表すようで、while文と呼ぶようです。
https://docs.python.org/ja/3/reference/compound_stmts.html#while
while ループと言えば、その後は条件で、その条件を満たす間はループを繰り返すのが一般的ですが、pythonの場合も同様ですね。
条件の終わりは for と同様に 「:」 で示すようです。条件は一般的な表記と同じで babies が 100 より小さい場合はループを継続する、です。ループの中身がインデントする点は、forループと同じですね。
3行目の print()は、formatメソッドを利用していますが、置換フィールドとして数値を指定する例ですね。
おそらく複数の数値が使えて、formatメソッドの中のカンマで区切ったものの値に対応すると思われます。今回は babies の値だけなので {0} ですね。先頭が0番なのが python の標準のようです。
4行目もタプルを変数に代入する例で、今回のタプルはその場で作成しています。
babies と parents + babies の計算結果でタプルを新たに作成し、それを parents と babies に代入するということです。当然前の値はここで廃棄されるわけです。それで babies の値がどんどん増えるわけです。
実行結果はこんなかんじです。(例によって、while文の中のインデントはうまく表示されない可能性があるので、インデントがある前提でご覧下さい。)
>>> parents, babies = (1, 1)
>>> while babies < 100:
... print ('This generation has {0} babies'.format(babies))
... parents, babies = (babies, parents + babies)
...
This generation has 1 babies
This generation has 2 babies
This generation has 3 babies
This generation has 5 babies
This generation has 8 babies
This generation has 13 babies
This generation has 21 babies
This generation has 34 babies
This generation has 55 babies
This generation has 89 babies
>>>
つまりフィボナッチ数列の第2項目から11項目までです。