Python - используя поиск по разделам - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь научить себя программированию с использованием учебного программного обеспечения 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)
...