Calculating mortgage interest in Python

后端 未结 6 662
轻奢々
轻奢々 2020-12-31 17:46

I am currently learning python through a video tutorial on youtube, and have come up against a formula I cannot seem to grasp, as nothing looks right to me. The basic conc

相关标签:
6条回答
  • 2020-12-31 17:58

    I also watched this youtube video and had the same problem. I'm a python newbie so bear with me. The instructors in the video were using python3 and I am using python2 so I am not sure if all the syntax are the same. But using some information found in this thread and info from this link: (http://www.wikihow.com/Calculate-Mortgage-Payments) I was able to get the answer. (My calculations matched an online mortgage calculator)

    #!/usr/bin/env python
    # The formula I used:
    M = L * ((I * ((1+I) ** n)) / ((1+I) ** n - 1))
    
    # My code (probably not very eloquent but it worked)
    
    # monthly payment
    M = None
    # loan_amount
    L = None
    # interest rate
    I = None
    # number of payments
    n = None
    
    L = raw_input("Enter loan amount: ")
    L = float(L)
    print(L)
    
    I = raw_input("Enter interest rate: ")
    I = float(I)/100/12
    print(I)
    
    n = raw_input("Enter number of payments: ")
    n = float(n)
    print(n)
    
    M = L * ((I * ((1+I) ** n)) / ((1+I) ** n - 1))
    
    M = str(M)
    print("\n")
    print("Monthly payment is " + M)
    
    0 讨论(0)
  • 2020-12-31 18:01

    This worked pretty well for me. Not exact, as loan calculators usually go by days, and I'm lazy so I go by months but here's a simple one I wrote that is accurate enough to be practical.

    L = input("How much will you be borrowing? ")
    L = float(L)
    print(L)
    
    
    N = input("How many years will you be paying this loan off? ")
    N = float(N) *12
    print(N)
    
    I = input("What is the interest in percents that you will be paying? Ex, 10% = 10, 5% = 5, etc. ")
    I = float(I)/100
    print(I)
    
    M = (L/N) + I*(L/N)
    
    float(M) 
    print("Your monthly payment will be: ")
    print(M)
    
    0 讨论(0)
  • 2020-12-31 18:02

    Apparently you copied the formula wrong.

    wrong:   * numberOfPayments 
    
    correct: ** numberOfPayments 
    

    note: it appears twice in the formula note: in python, ** is "to the power of" operator.

    0 讨论(0)
  • 2020-12-31 18:04

    With the help of examples, this is what I did.

    # Formula for mortgage calculator
    # M = L(I(1 + I)**N) / ((1 + I)**N - 1)
    # M = Monthly Payment, L = Loan, I = Interest, N = Number of payments, ** = exponent
    
    # Declares and asks for user to input loan amount. Then converts to float
    loanAmount = input('Enter loan amount \n')
    loanAmount = float(loanAmount)
    
    # Declares and asks user to input number of payments in years. Then converts to float. Years * 12 to get
    #  total number of months
    years = input('How many years will you have the loan? \n')
    years = float(years) * 12
    
    # Declares and asks user to input interest rate. Then converts to float and input interest rate is /100/12
    interestRate = input('Enter Interest Rate \n')
    interestRate = float(interestRate) / 100 / 12
    
    # Formula to calculate monthly payments
    mortgagePayment = loanAmount * (interestRate * (1 + interestRate)
                                    ** years) / ((1 + interestRate) ** years - 1)
    
    # Prints monthly payment on next line and reformat the string to a float using 2 decimal places
    print("The monthly mortgage payment is\n (%.2f) " % mortgagePayment)
    
    0 讨论(0)
  • 2020-12-31 18:11

    I also came accross this problem and this is my solution

    loan = input('Enter Loan Amount: ')
    loan = float(loan)
    
    numberOfPayments = input('Enter Loan payments in years: ')
    numberOfPayments = float(numberOfPayments) * 12
    
    interest = input('Annuel interest Rate: ')
    interest = float(interest)/100/12
    
    monthlyPayments = loan * (interest * (1 + interest) ** numberOfPayments) / ((1 + interest) ** numberOfPayments - 1)
    
    print (round(monthlyPayments))
    
    0 讨论(0)
  • 2020-12-31 18:16

    This mortgage package does it nicely:

    >>> import mortgage
    >>> m=mortgage.Mortgage(interest=0.0375, amount=350000, months=360)
    >>> mortgage.print_summary(m)
                         Rate:      0.037500
                 Month Growth:      1.003125
                          APY:      0.038151
                 Payoff Years:            30
                Payoff Months:           360
                       Amount:     350000.00
              Monthly Payment:       1620.91
               Annual Payment:      19450.92
                 Total Payout:     583527.60
    
    0 讨论(0)
提交回复
热议问题