def positive_number(message):
while True:
try:
value = float(input(message))
if value > 0:
return value
else:
print('0より大きい数値を入力してください')
except ValueError:
print('数字を入力してください')
assets = positive_number('投資資産額を入力してください>')
rate = positive_number('想定利回りを入力してください>')
period = positive_number('運用期間を入力してください>')
growth = (1 + rate / 100)
for i in range(1, int(period)):
result = assets * growth ** i
print(f'{i}年後:{int(result):,}円')
result = assets * growth ** period
print(f'最終資産額({period}年後):{int(result):,}円')
目次
計算結果を保存する
ここで問題がありました。
このコードでは、毎年の計算結果を表示するだけです。
しかし、今後グラフ表示をするには、計算結果を保存しておく必要があります。
そこで、年数と資産額をリスト化します。
amounts=[] #資産リスト
years=[] #年数リスト
yearsには年数を、amountsには資産額を保存します。
appendでリストに追加する
for文の中で計算した結果を追加します。
for i in range(1,int(period)+1):
years.append(i)
result = assets * growth ** i
amounts.append(result)
append()を使うことで、計算結果をリストへ追加できます。
例えば、
years
には、
[1, 2, 3, 4, 5]
が入り、
amounts
には、
[1050000, 1102500, 1157625, ...]
が入ります。
計算結果を再利用する
以前は最後の資産額を表示するために、もう一度計算していました。
しかし、リスト化したことで最後の値を取り出すだけで済みます。
print(f'最終資産額:{int(amounts[-1]):,}円')
amounts[-1]は、リストの最後の値を取得する書き方です。
同じ計算を繰り返さず、保存したデータを再利用できます。
完成したコード
def positive_number(message):
while True:
try:
value = float(input(message))
if value > 0:
return value
else:
print('0より大きい数値を入力してください')
except ValueError:
print('数字を入力してください')
assets = positive_number('投資資産額を入力してください>')
rate = positive_number('想定利回りを入力してください>')
period = positive_number('運用期間を入力してください>')
growth=(1+rate/100)
amounts=[] #資産リスト
years=[] #年数リスト
for i in range(1,int(period)+1):
years.append(i)
result=assets * growth ** i
amounts.append(result)
print(f'{i}年後:{int(result):,}円')
print(f'最終資産額:{int(amounts[-1]):,}円')
print(years,amounts)
コメント