前回から、Pythonを使ったデスクトップアプリ制作に挑戦しています。
最終的な目標は、資産シミュレーターのアプリ化です。
今回は画面作成ではありません。
まずはアプリの中身となる計算処理を作ります。
今回は「複利計算」を関数化しました。
今回作成した完成コード
最終的に作成したコードはこちらです。
def asset_total(asset, rate, years):
rate_100 = rate / 100
total = asset * (1 + rate_100) ** years
return round(total)
この関数では、
asset→ 投資元本rate→ 年利years→ 運用年数
を入力します。
例えば、
- 元本100万円
- 年利5%
- 10年間運用
の場合の将来資産を計算できます。
最初に作成したコード
最初は以下のようなコードを書きました。
def asset_total(asset, rate, years):
rate_100 = 1 + (rate / 100)
total = asset * rate_100 ** years
total = int(total)
return total
このコードでも複利計算はできます。
しかし、今後機能を追加することを考えると、少し修正した方が良い部分がありました。
修正① 利率の計算方法を変更
最初は、
rate_100 = 1 + (rate / 100)
としていました。
先に「1+利率」まで計算しておけば、後の計算式が簡単になると思ったためです。
しかし、今後このプログラムでは、
- 積立投資計算
- 月利計算
- 資産推移の作成
などを追加する予定です。
そのため、利率そのものを別で管理した方が分かりやすいと考えました。
そこで、
rate_100 = rate / 100
に変更しました。
計算するときに、
(1 + rate_100)
を使う形にしています。
この方が、それぞれの役割が分かりやすくなります。
修正② 小数点以下の処理を変更
最初は、
total = int(total)
としていました。
理由は、資産額に1円未満の小数点は必要ないと思ったためです。
しかし、int()は小数点以下を切り捨てます。
例えば、
1234.9
の場合、
1234
になります。
今回は資産シミュレーターなので、切り捨てより四捨五入の方が自然だと考えました。
そのため、
round()
を使うことにしました。
さらに、
return round(total)
と書くことで、処理を1行減らすこともできました。
returnの意味を理解できた
今回、自分で関数を作ることでreturnの意味をより理解できました。
returnは、関数の中で計算した結果を外へ返すために使います。
例えば、
print(asset_total(1000000,5,10))
では、
① 関数に値を渡す
② 関数内で計算する
③ returnで結果を返す
④ printで表示する
という流れになります。
Tkinterアプリ化への準備
今回作った関数では、
asset
rate
years
という変数に数字を入力しています。
今後Tkinterで画面を作る場合は、
入力フォーム
↓
入力された数字を取得
↓
この関数へ渡す
↓
計算結果を表示
という流れになります。
そのため、先に計算部分を作っておくことで、画面作成に集中できます。
今回のまとめ
今回はPythonで複利計算を関数化しました。
また、コードを書いて終わりではなく、
- 変数の役割
- 計算処理の分け方
- returnの使い方
- 後から拡張しやすいコード
について考えることができました。
変数名や関数名については、まだ改善できる部分があります。
今後プログラムが大きくなっていく中で、より分かりやすい名前も意識していきます。
次回は、年ごとの資産推移を作成していきます。



コメント