Help Needed with Debugging P1!
Hey guys, my code is producing weird output...any idea why this may be?
MIT 6.00 Intro Computer Science (OCW)
Stacey Warren - Expert brainly.com
Hey! We 've verified this expert answer for you, click below to unlock the details :)
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.
Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus.
Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.
I got my questions answered at brainly.com in under 10 minutes. Go to brainly.com now for free help!
## Problem Set 1
## Gather user input
outstandingBalance = float(raw_input("Please enter the outstanding balance on your credit card: "))
interestRate = float(raw_input("Please enter the interest rate on your credit card as a decimal: "))
minPayment = float(raw_input("Please enter the minimum monthly payment on your credit card as a decimal: "))
currentMinPayment = 0.0
principlePaid = 0.0
interestPaid = 0.0
month = 1
remainingBalance = 0.0
currentMinPayment = round(minPayment * outstandingBalance,2)
interestPaid = round (interestPaid + ((interestRate/12)*outstandingBalance),2)
principlePaid = round(principlePaid + (currentMinPayment - interestPaid), 2)
outstandingBalance = round((outstandingBalance - principlePaid), 2)
##Make all into strings
currentMinPayment = str(currentMinPayment)
interestPaid = str(interestPaid)
principlePaid = str(principlePaid)
outstandingBalance = str(outstandingBalance)
month = str(month)
##Print all out
print ("Month: " + month)
print ("Minimum monthly payment: $" + currentMinPayment)
print ("Principle paid: $" + principlePaid)
print ("Remaining balance: $" + outstandingBalance)
##Change month to int and increment month
month = int(month)
month = (month +1)
##Change then back to floats
currentMinPayment = float(currentMinPayment)
interestPaid = float(interestPaid)
principlePaid = float(principlePaid)
outstandingBalance = float(outstandingBalance)
month = int(month)
I don't like converting variables to strings and back to numbers. Unless the course requires it, I say don't do it. You can have str( aFloatOrInt ) in a print statement/function. I've also at times had variables like numberString, which is the string of my number for printing.
I was having trouble with print statements with the variables as strings, i.e. print "Month: " + month, when month is an int, was resulting in an error, thus the conversions
Not the answer you are looking for? Search for more explanations.
i totally agree, not ideal
Not sure if it's in the conversion or the casting back, but you have a multiplier being added to your values.
Put in 2500 as a minimum payment and it prints Minimum monthly payment: $250000.0
Oh, because you are multiplying it by the outstanding balance: currentMinPayment = round(minPayment * outstandingBalance,2)
I would say that you need to hammer out your logic before you worry too much about formatting on your printout. Once you have it working mathematically, then format your output.
use a comma instead of a plus sign in the print statements.
what is weird about the results
How about the fact that you input a monthly payment of $0.05 and it makes it $50.00?
You would never be able to pay off $400ish in 12 months, at 10%, with only a nickel paid each month.
Figured it out - thanks guys!
@eSpex .... the prompt is a bit misleading - that is supposed to be asking for a monthly payment Rate.