вычисление количества месяцев для достижения первоначального взноса

#python #spyder

#python #spyder

Вопрос:

Напишите сценарий, который включает в себя определение house_loan(), которое вы только что написали. Когда скрипт выполняется, он должен попросить пользователя ввести следующие значения, а затем использовать функцию house_loan() для вычисления месяцев, необходимых для накопления достаточного количества денег для первоначального взноса. Обратите внимание, что все аргументы должны быть числами с плавающей запятой.

  1. Начальная годовая зарплата
  2. Часть зарплаты, которая должна быть сохранена
  3. Стоимость дома вашей мечты
 Test Case #1
>>>
Enter your annual salary: 120000
Enter the percent of your salary to save, as a decimal: .10
Enter the cost of your dream house: 1000000
Number of months: 183
>>>
 
 Test Case #2 
>>>
Enter your annual salary: 80000
Enter the percent of your salary to save (as a decimal): .15
Enter the cost of your dream home: 500000
Number of months: 105
>>>
 

Когда я выполняю свой код, я получаю либо сверхвысокое число, либо число, которое ниже его. Я не могу понять, как правильно настроить свой код, чтобы он прошел 1-й и 2-й случай. Более того, я просто помогаю правильно настроить его, чтобы получить правильный ответ.

 Code
annual_salary = float(input('What's your annual salary? n'))
portion_saved = float(input('What portion would you like to save (as a decimal)? n'))
portion_downpayment = 0.25
total_cost = float(input('What is the total cost of your dream house? n'))

def house_loan(annual_salary,
               portion_saved,
               portion_downpayment,
               total_cost):

    cost_to_be_paid = total_cost - portion_downpayment    #calculat the pending money to be paid
    monthly_salary = annual_salary/12                     #calculate the monthly salary 
    monthly_savings = monthly_salary*portion_saved        #calculate monthly savings in salary 
    total_months = cost_to_be_paid/monthly_savings        #returning the months required to pay money

    return total_months 
print('The months required to pay enough money for the down payment is: ',house_loan(annual_salary, portion_saved, portion_downpayment, total_cost))
 

Комментарии:

1. Я думаю, что вы cost_to_be_paid должны умножать, а не вычитать.

2. я изменил его на умножение, и это просто дало мне большее число

3. Пожалуйста, укажите остальную часть кода (где вы вызываете house_loan() и отображаете результат). Вы также можете ввести некоторые print() инструкции, чтобы увидеть, где вычисления идут неправильно.

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

5. @DaveStSomeWhere я добавил print() заявление!

Ответ №1:

Ваш portion_downpayment не был глобальной переменной, поэтому он никогда не передавался в вашу функцию. Это работает:

 annual_salary = float(input('Whats your annual salary? n'))
portion_saved = float(input('What portion would you like to save (as a decimal)? n'))
total_cost = float(input('What is the total cost of your dream house? n'))

def house_loan(annual_salary,
               portion_saved,
               portion_downpayment,
               total_cost):

    portion_downpayment = 0.25
    cost_to_be_paid = total_cost * portion_downpayment      #calculat the pending money to be paid
    monthly_salary = annual_salary / 12                     #calculate the monthly salary
    monthly_savings = monthly_salary * portion_saved        #calculate monthly savings in salary
    total_months = cost_to_be_paid / monthly_savings        #returning the months required to pay money
    return(total_months)

print('The months required to pay enough money for the down payment is: %s' % house_loan(annual_salary, portion_saved, portion_downpayment, total_cost))