一休さん風小遣い計算

小遣いの話です。

1月に1円、2月には2倍の2円、3月にはその倍の4円のように、毎月、前の月の倍の小遣いがもらえるとして、年の終わりには合計いくらになっているでしょうか? Pythonで計算してみましょう。

 

2種類のpython例を挙げます。

(1)if 分を使わないために、計算は13月分までしますが、print文を計算式より先に置いて12月分までしかプリントしません。

 

tuki = 1
goukei = 1
print("月", "月の小遣い", "その月までの合計")
for i in range(0,12):
    print(i+1, tuki, goukei)
    tuki *= 2
    goukei += tuki


(2)べき乗の演算子を使った例です。べき乗とは xy のようにあらわされるもので、ここでは、2i を使っています。i がゼロの時に 答えは 1 になります。

 

goukei = 0
print("月", "月の小遣い", "その月までの合計")
for i in range(0,12):
    tuki = 2**i
    goukei += tuki
    print(i+1, tuki, goukei)

最初の回を if 文で区別する例

一休さんのお米の話と同じ方法で小遣いをもらう例のfor文とif分を組合わせた例です。

最初の月だけ、tuki と goukei に答えの分かっている 1を入れます。それ以降の月は else の下の分を実行します。

 

print("月", "月の小遣い", "その月までの合計")
for i in range(0,12):
    if i == 0:
        tuki = 1
        goukei = 1
    else:
        tuki *= 2
        goukei += tuki
    print(i+1, tuki, goukei)