Python開発|Tkinterでアプリ制作② 複利計算を関数化

前回から、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の使い方
  • 後から拡張しやすいコード

について考えることができました。

変数名や関数名については、まだ改善できる部分があります。

今後プログラムが大きくなっていく中で、より分かりやすい名前も意識していきます。

次回は、年ごとの資産推移を作成していきます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

FIREを目指しながら、投資・プログラミング・家庭菜園・資格勉強に取り組んでいます。試行錯誤しながら積み上げる日々を記録するブログです。

コメント

コメントする

目次