Что мне не хватает в этом наборе математических задач Python - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь создать калькулятор, который скажет вам, сколько месяцев потребуется, чтобы сэкономить на первоначальном взносе в какой-то дом с учетом заработной платы, процентного отчисления и т. Д. Я получил код для работы до конца, мойматематика в какой-то момент отключена, и я не знаю где. Любая помощь будет отличной.

Инструкции: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/assignments/MIT6_0001F16_ps1.pdf

annual_salary = float(input('What is your annual salary?\n'))

portion_saved = float(input('What percent of your income will you save annually (decimal form)?\n'))

total_cost = float(input('What is the total cost of the home?\n'))


portion_down_payment = .25 * total_cost

current_savings = 0

months = 0


monthly_saved = (annual_salary / 12) * portion_saved

monthly_total = (monthly_saved * .04) + monthly_saved

while current_savings < portion_down_payment:

    current_savings = current_savings + monthly_total

    months = months + 1

else:

    print(months)

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

после того, как я возился с ним в течение минуты, я понял, что вам нужно рассчитать свой процент, прежде чем прибавлять зарплату в следующие месяцы, или вы приблизитесь, но не совсем ... Этот код выдает то же, что и тестовые примеры MIT.

#Write a program to calculate how many months it will take you to save up enough 
#money for a down
#payment. You will want your main variables to be floats, so you should cast user 
#inputs to floats.

annual_salary = 0
total_cost = 0
portion_saved = 0


try:
    annual_salary =  float(input("Enter your annual salary: "))
    portion_saved = float(input("Enter the percent of your salary to save, as a decimal: "))
    total_cost = float(input("Enter the cost of your dream home: "))
except:
    print("Please make sure you input a number")

returns = 0.04
portion_down_payment = 0.25
down_payment = total_cost * portion_down_payment

monthly_salary = annual_salary / 12
monthly_save = monthly_salary * portion_saved
current_savings = 0

months = 1

while current_savings < down_payment:

    investments = (current_savings * returns) / 12 #investment return first otherwise you get close but not close enough
    current_savings += investments
    current_savings += monthly_save
    months += 1
0 голосов
/ 11 октября 2019

Я подозреваю, что проблема заключается в том, как вы рассчитываете проценты на сбережения человека. Похоже, вы даете им дополнительные 4% от каждого сберегательного вклада, но это игнорирует сложный характер сбережений. Возможно, вы захотите перенести эти 4% -ные вычисления в цикл, чтобы заработанные проценты основывались на всем балансе сбережений:

current_savings = 0
months = 0
monthly_saved = (annual_salary / 12) * portion_saved

while current_savings < portion_down_payment:
    current_savings = current_savings * 1.04 + monthly_saved     # 4% monthly interest
    months = months + 1

print(months)

Теперь этот код предполагает, что использованные вами 4% - этосоответствующая процентная ставка для ежемесячного расчета. Если это годовая процентная ставка (т. Е. APR), вам, вероятно, нужно поделить ее на 12, чтобы получить правильную месячную ставку.

...