Я только начал Python, и OCW показался мне довольно популярным выбором для начала.Тем не менее, я застрял в наборе проблем, при котором, учитывая набор параметров, вы должны выяснить сумму зарплаты, которую вы должны сэкономить в данном месяце.он использует поиск по разделам, который я реализовал, но мой код, похоже, не дает правильного ответа.
Заработная плата увеличивается на 7% каждые 6 месяцев, а годовая прибыль в 4% от сбережений зачисляется в конце месяца.Экономия в% должна прекратиться, когда общая экономия будет в пределах $ 100 от требования первоначального взноса.
cost = int(1000000)
down_payment = float(0.25 * cost)
current_savings = 0
r = 0.04
annual_salary = int(150000)
a = annual_salary
months = 0
semi_raise = 0.07
epsilon = 100
high = 1.0
def savings(a, current_savings, portion, down_payment):
for m in range(1, 37):
if m%6 == 0 and m>0:
a = a * (1+semi_raise)
current_savings = current_savings + (a/12 * portion) + (current_savings * r)
return (current_savings)
while abs(current_savings-down_payment) >= 100:
portion = float((high+low)/2)
annual_salary = a
current_savings = 0.0
current_savings = savings(a, current_savings, portion, down_payment)
if current_savings < down_payment:
low = portion
elif current_savings > down_payment:
high = portion
else:
print("not enough savings")
print("Best", "%.4f" %portion)
для этого случая я получаю 0,2239 против 0,4411, как указано в решении.