Когда вы увеличиваете ставку сбережений каждые 6 месяцев, когда они получают повышение, вы делаете два сбережения в сбережения. Вы делаете обычное прибавление к сбережению до if
, а затем снова с новой скоростью внутри if
.
Удаление этой строки из блока if
дает ожидаемый результат.
while current_savings < portion_down_payment:
current_savings += (current_savings * annual_return_rate / 12) + portion_saved_monthly
month += 1
if month % 6 == 0:
annual_salary += annual_salary * semi_annual_raise
portion_saved_monthly = annual_salary / 12 * portion_saved