Home > Back-end >  Unsure why output is 0. Trying to count months to pay downpayment
Unsure why output is 0. Trying to count months to pay downpayment

Time:11-30

print("Please enter you starting annual salary: ")
annual_salary = float(input())
monthly_salary = annual_salary/12
 
print("Please enter your portion of salary to be saved:  ")
portion_saved = float(input())

print ("Please enter the cost of your dream home:  ")
total_cost = float(input())

current_savings = 0
r = 0.04/12
n = 0
portion_down_payment = total_cost*int(.25)

if current_savings < portion_down_payment:
  monthly_savings = monthly_salary*portion_saved  
  interest = monthly_savings*r
  current_savings = current_savings   monthly_savings   interest
  n =  1
else: 
  print(n)

The above is my code. I keep getting output = 0 but unsure why.

This the problem statement, I am a HS student attempting OCW coursework.

  1. Call the cost of your dream home ​total_cost​.
  2. Call the portion of the cost needed for a down payment ​portion_down_payment​. For simplicity, assume that portion_down_payment = 0.25 (25%).
  3. Call the amount that you have saved thus far ​current_savings​. You start with a current savings of $0.
  4. Assume that you invest your current savings wisely, with an annual return of ​r ​(in other words, at the end of each month, you receive an additional ​current_savings*r/12​ funds to put into your savings – the 12 is because ​r​ is an annual rate). Assume that your investments earn a return of r = 0.04 (4%).
  5. Assume your annual salary is ​annual_salary​.
  6. Assume you are going to dedicate a certain amount of your salary each month to saving for the down payment. Call that ​portion_saved​. This variable should be in decimal form (i.e. 0.1 for 10%).
  7. At the end of each month, your savings will be increased by the return on your investment, plus a percentage of your ​monthly salary ​(annual salary / 12). 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. Your program should ask the user to enter the following variables:

The starting annual salary (annual_salary) The portion of salary to be saved (portion_saved) The cost of your dream home (total_cost)

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 home:​ 1000000 Number of months:​ 183

CodePudding user response:

You have n = 1 but I think you mean n = 1

Also int(.25) evaluates to 0, I think you want int(total_cost*.25). As your code is, the if statement will always evaluate to False because current_savings == 0 and portion_down_payment == 0

More generally, when your code isn't working as expected, you should put in either print() or assert statements to narrow down where your code is deviating from what you expect. For example, before the if statement you could have it print the two values you are comparing.

  • Related