Я пытаюсь научить себя программированию с использованием учебного программного обеспечения MIT с открытым исходным кодом, проходя лекции и задания, и столкнулся с трудностями. В задании я должен использовать поиск по разделению пополам, чтобы попытаться рассчитать наилучшую норму сбережений в течение 36 месяцев, учитывая следующее: 1. полугодовое повышение составляет 0,07 (7%) 2. годовой доход от инвестиций составляет 0,04 ( 4%) 3. первоначальный взнос составляет 0,25 (25%) от стоимости дома 4. стоимость дома, на который вы экономите, составляет 1 миллион долларов США.
Кажется, я не получаю желаемого результата, и в настоящее время не могу понять, что я сделал неправильно
n.b.
начальная зарплата 150 000
нет. шаги 12
лучшая норма сбережений составляет 0,4411
semi_annual_raise = 0.07
r = 0.04
portion_down_payment = 0.25
total_cost = 1000000
annual_salary = float(input("Enter the starting salary: "))
monthly_salary = annual_salary/12
current_savings = 0
number_months = 0
i = 6
total_time = 36
steps = 0
low = 0
high = 10000
for y in range (0,10000):
y = (high + low) / 2.0
portion_saved = y / 10000
while current_savings <= total_cost*portion_down_payment:
investment = current_savings*(r/12)
current_savings = current_savings + monthly_salary*portion_saved + investment
number_months += 1
if number_months == i:
monthly_salary = monthly_salary*(semi_annual_raise+1)
i += 6
if current_savings >= total_cost*portion_down_payment and number_months < total_time:
high = y
elif current_savings < total_cost*portion_down_payment and number_months > total_time:
low = y
y = (high + low) / 2.0
portion_saved = y / 10000
steps += 1
print("Amount of salary to be saved per month: ", portion_saved)
print("Steps in bisection search: ", steps)