Here's the question you clicked on:

55 members online
  • 0 replying
  • 0 viewing

TuringTest

  • 3 years ago

Python: Why can't I insert print statements to debug this?

  • This Question is Closed
  1. TuringTest
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    balance = 320000 annualInterestRate = 0.2 epsilon=.01 low=balance/12.0 monthlyInterestRate=annualInterestRate/12.0 high=balance*(1+monthlyInterestRate)**12/12.0 payment=(high+low)/2.0 newBalance=balance while abs(balance-newBalance)>epsilon: newBalance=balance for count in range(12): newBalance=(newBalance-payment)*(1+monthlyInterestRate) if balance>newBalance: low=payment else: high=payment payment=(high+low)/2.0 print('Lowest Payment: '+str(round(payment, 2)))

  2. TuringTest
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    the output is coming out too high, but I can't debug it because it only will let me put print statements in at the end for some reason. I would like to put one up between lines 9 and 10 to track the balance, and another at the end to track payment. Any ideas?

  3. KonradZuse
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    Why can't you debug? I'm not too sure about Python nor the editor you are using, but if you want to do things like debug you will need a good IDE, which I also recommend. I'll take a look later to see if I find a mistake tho.

  4. KonradZuse
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    high=balance*(1+monthlyInterestRate)**12/12.0 what's this **?

  5. KonradZuse
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    Also I would surround by brackets if that is what should happen. (balance*(1+monthlyInterestRate)**12)/12?? I mean I shouldn't have to tell a math wizz like you that, so I'm assuming you did this on purpose, but who knows... that ** is something I'm more konfused about :P

  6. TuringTest
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    The program is to use bisection search to find the minimum monthly payment required to pay off some debt "balance" within one year . high=balance*(1+monthlyInterestRate)**12/12.0 this is the maximum yearly payment could be imagining we didn't pay off anything at any month and the interest accrues by a factor of 1+monthlyInterestRate each month, then the monthly payment is given by dividing by 12 months. And yeah, I tried the parentheses bit.

  7. TuringTest
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    what is an IDE ?

  8. TuringTest
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    ** raises to a power btw

  9. eSpeX
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    IDE = Integrated Development Environment

  10. TuringTest
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    Problem solved, I had all sorts of horrible things going on. the worst being that I defined newBalance=balance at the beginning, so the next line while abs(balance-newBalance)>epsilon was never true, so the thing wasn't even running the body of the program :P I won't type the corrected program as it is an answer to the MITx thing, but I did get it :)

  11. Not the answer you are looking for?
    Search for more explanations.

    • Attachments:

Ask your own question

Sign Up
Find more explanations on OpenStudy
Privacy Policy