Date: 2018-05-22
Tags: birthday

43歳 - Pythonで自分と息子の日齢比を計算

43歳です。ふと、自分は生後何日目なんだろうと思ったので、Pythonで計算してみました。

>>> from datetime import date
>>> today = date.today()
>>> today - date(1975,5,22)
datetime.timedelta(15706)

自分は、生後15706日目みたいです。

>>> today - date(2018,1,31)
datetime.timedelta(111)

息子は111日目。

>>> (today - date(2018,1,31)) / (today - date(1975,5,22))
0.007067362791289953

まだ自分の1%にも満たなかった。

ここで問題です。息子の日齢が私の日齢の1%に達するのは生後何日目でしょう?回答はPythonで解いてください。ライブラリの利用制限はありません。

答えは画像のあとで!


../../_images/happybirthday.jpg

体重計( Nokia Body Cardio )にお祝いされた


では回答です。2つ書いてみたけど、他にも書き方はたくさんあると思います。

1つ目。for文で解くとこんな感じ:

>>> for x in range(10000):
...     if x/(x+15595) >=  0.01:
...         print(x)
...         break
...
158

2つ目。 Sympy で解くとこんな感じ:

>>> import sympy
>>> x = sympy.Symbol('x')
>>> f = x/(x+15595)
>>> sympy.solve(sympy.Eq(f,0.01))
[157.525252525253]

158日目だと分かりました。

日齢比をyとした式で定義して、変形してみます。

>>> y = sympy.Symbol('y')
>>> f2 = sympy.Eq(f, y)
>>> sympy.solve(f2, x)
[-15595*y/(y - 1)]

はい、これでy(日齢比)に好きな値を入れれば、日齢何日目にその比率になるか計算できますね。

y=0.1 だとxはいくつになる?

>>> sympy.solve(f2, x)[0].subs(y, 0.1)
1732.77777777778

Sympy 便利。