#python #spyder
#python #spyder
Вопрос:
Напишите сценарий, который включает в себя определение house_loan(), которое вы только что написали. Когда скрипт выполняется, он должен попросить пользователя ввести следующие значения, а затем использовать функцию house_loan() для вычисления месяцев, необходимых для накопления достаточного количества денег для первоначального взноса. Обратите внимание, что все аргументы должны быть числами с плавающей запятой.
- Начальная годовая зарплата
- Часть зарплаты, которая должна быть сохранена
- Стоимость дома вашей мечты
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))