Ask your own question, for FREE!
MIT 6.00 Intro Computer Science (OCW) 14 Online
OpenStudy (anonymous):

Hi everyone, in problem set 1 about the credit card program I used a for loop and it works just fine giving the right results but when I look at the solution file it uses a while loop, is there a reason why one would be better than the other given the results seem to be the same?

geerky42 (geerky42):

I am not from MIT 6.00 Intro Computer Science, or whatever it is But perhaps it has something to do with how many times you needed to loop. If you know for sure how many it will loop, then for loop is fine. If you don't know, while loop is better, since it loops until specified condition is false; easier to manage with, I guess.

geerky42 (geerky42):

Can you post problem?

OpenStudy (anonymous):

Problem Set 1 Handed out: Lecture 2. Due: 11:59pm, Lecture 4. Introduction This problem set will introduce you to using control flow in Python and formulating a computational solution to a problem. You will design and write three simple Python programs, test them, and hand them in. Be sure to read this problem set thoroughly. Paying Off Credit Card Debt Each month, a credit card statement will come with the option for you to pay a minimum amount of your charge, usually 2% of the balance due. However, the credit card company earns money by charging interest on the balance that you don’t pay. So even if you pay credit card payments on time, interest is still accruing on the outstanding balance. Say you’ve made a $5,000 purchase on a credit card with 18% annual interest rate and 2% minimum monthly payment rate. After a year, how much is the remaining balance? Use the following equations. Minimum monthly payment = Minimum monthly payment rate x Balance (Minimum monthly payment gets split into interest paid and principal paid) Interest Paid = Annual interest rate / 12 months x Balance Principal paid = Minimum monthly payment – Interest paid Remaining balance = Balance – Principal paid For month 1, we can compute the minimum monthly payment by taking 2% of the balance: Minimum monthly payment = .02 x $5000.0 = $100.0 We can’t simply deduct this from the balance because there is compounding interest. Of this $100 monthly payment, compute how much will go to paying off interest and how much will go to paying off the principal. Remember that it’s the annual interest rate that is given, so we need to divide it by 12 to get the monthly interest rate. Interest paid = .18/12.0 x $5000.0 = $75.0 Principal paid = $100.0 – $75.0 = $25 The remaining balance at the end of the first month will be the principal paid this month subtracted from the balance at the start of the month. Remaining balance = $5000.0 – $25.0 = $4975.0 For month 2, we repeat the same steps: Minimum monthly payment = .02 x $4975.0 = $99.50 Interest Paid = .18/12.0 x $4975.0 = $74.63 Principal Paid = $99.50 – $74.63 = $24.87 Remaining Balance = $4975.0 – $24.87 = $4950.13 After 12 months, the total amount paid is $1167.55, leaving an outstanding balance of $4708.10. Pretty depressing! Paying the Minimum Problem 1 Write a program to calculate the credit card balance after one year if a person only pays the minimum monthly payment required by the credit card company each month. Use raw_input() to ask for the following three floating point numbers: 1. the outstanding balance on the credit card 2. annual interest rate 3. minimum monthly payment rate For each month, print the minimum monthly payment, remaining balance, principle paid in the format shown in the test cases below. All numbers should be rounded to the nearest penny. Finally, print the result, which should include the total amount paid that year and the remaining balance. Test Case 1 >>> Enter the outstanding balance on your credit card: 4800 Enter the annual credit card interest rate as a decimal: .2 Enter the minimum monthly payment rate as a decimal: .02 Month: 1 Minimum monthly payment: $96.0 Principle paid: $16.0 Remaining balance: $4784.0 Month: 2 Minimum monthly payment: $95.68 Principle paid: $15.95 Remaining balance: $4768.05 Month: 3 Minimum monthly payment: $95.36 Principle paid: $15.89 Remaining balance: $4752.16 Month: 4 Minimum monthly payment: $95.04 Principle paid: $15.84 Remaining balance: $4736.32 Month: 5 Minimum monthly payment: $94.73 Principle paid: $15.79 Remaining balance: $4720.53 Month: 6 Minimum monthly payment: $94.41 Principle paid: $15.73 Remaining balance: $4704.8 Month: 7 Minimum monthly payment: $94.1 Principle paid: $15.69 Remaining balance: $4689.11 Month: 8 Minimum monthly payment: $93.78 Principle paid: $15.63 Remaining balance: $4673.48 Month: 9 Minimum monthly payment: $93.47 Principle paid: $15.58 Remaining balance: $4657.9 Month: 10 Minimum monthly payment: $93.16 Principle paid: $15.53 Remaining balance: $4642.37 Month: 11 Minimum monthly payment: $92.85 Principle paid: $15.48 Remaining balance: $4626.89 Month: 12 Minimum monthly payment: $92.54 Principle paid: $15.43 Remaining balance: $4611.46 RESULT Total amount paid: $1131.12 Remaining balance: $4611.46 >>> Test Case 2 In recent years, many credit card corporations tightened restrictions by raising their minimum monthly payment rate to 4%. As illustrated in the second test case below, people will be able to pay less interest over the years and get out of debt faster. >>> Enter the outstanding balance on your credit card: 4800 Enter the annual credit card interest rate as a decimal: .2 Enter the minimum monthly payment rate as a decimal: .04 Month: 1 Minimum monthly payment: $192.0 Principle paid: $112.0 Remaining balance: $4688.0 Month: 2 Minimum monthly payment: $187.52 Principle paid: $109.39 Remaining balance: $4578.61 Month: 3 Minimum monthly payment: $183.14 Principle paid: $106.83 Remaining balance: $4471.78 Month: 4 Minimum monthly payment: $178.87 Principle paid: $104.34 Remaining balance: $4367.44 Month: 5 Minimum monthly payment: $174.7 Principle paid: $101.91 Remaining balance: $4265.53 Month: 6 Minimum monthly payment: $170.62 Principle paid: $99.53 Remaining balance: $4166.0 Month: 7 Minimum monthly payment: $166.64 Principle paid: $97.21 Remaining balance: $4068.79 Month: 8 Minimum monthly payment: $162.75 Principle paid: $94.94 Remaining balance: $3973.85 Month: 9 Minimum monthly payment: $158.95 Principle paid: $92.72 Remaining balance: $3881.13 Month: 10 Minimum monthly payment: $155.25 Principle paid: $90.56 Remaining balance: $3790.57 Month: 11 Minimum monthly payment: $151.62 Principle paid: $88.44 Remaining balance: $3702.13 Month: 12 Minimum monthly payment: $148.09 Principle paid: $86.39 Remaining balance: $3615.74 RESULT Total amount paid: $2030.15 Remaining balance: $3615.74 >>> Hints Use the round function. To help you get started, here is a rough outline of the stages you should probably follow in writing your code: • Retrieve user input. • Initialize some state variables. Remember to find the monthly interest rate from the annual interest rate taken in as input. • For each month: o Compute the new balance. This requires computing the minimum monthly payment and figuring out how much will be paid to interest and how much will be paid to the principal. o Update the outstanding balance according to how much principal was paid off. o Output the minimum monthly payment and the remaining balance. o Keep track of the total amount of paid over all the past months so far. • Print out the result statement with the total amount paid and the remaining balance. Use these ideas to guide the creation of your code.

OpenStudy (anonymous):

That was the problem set so basically yes we know exactly how many times we need to run the loop as it's one per month so 12 times so I used a for in range (1,13)

OpenStudy (anonymous):

*for i in range (1,13)

OpenStudy (e.mccormick):

When you get to the part of the question where it asks you to optimize things, you don't know how many times the outer loop needs to be run. That is when the while loop becomes better.

Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!
Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!