【问题标题】:MITx: 6.00.1x Introduction to Computer Science and Programming Using PythonMITx:6.00.1x 计算机科学和 Python 编程简介
【发布时间】:2016-06-21 23:50:55
【问题描述】:

所以我对Python很陌生......问题如下:

如果一个人每个月只支付信用卡公司要求的最低月供,请编写一个程序计算一年后的信用卡余额。

我目前的代码如下:

month = 1
minimumMonthlyPayment = (balance * monthlyPaymentRate)
totalPaid = 0.0

while month < 13:
    print "Month: " + str(month)
    print "Minimum Monthly Payment: " + str(round(minimumMonthlyPayment, 2))
    balance = (balance - (balance * monthlyPaymentRate)) * (1 + (annualInterestRate/12))
    minimumMonthlyPayment = (balance * monthlyPaymentRate)
    print "Remaining Balance: " + str(round(balance, 2))
    totalPaid += minimumMonthlyPayment
    month += 1

print "Total Paid: " + str(round(totalPaid, 2))
print "Remaining Balance: " + str(round(balance, 2))

这是正确的输出:

所以两个输出中的所有数字都是相同的,但我的总支付最终是 1732.94,而不是正确的金额 1775.55。我将输出中的数字加到一个侧面计算器上,结果也为 1775.55。我的代码中有什么东西让这件事变得无聊吗?

以下是测试代码使用的变量值:

balance = 4213;
annualInterestRate = 0.2;
monthlyPaymentRate = 0.04;

【问题讨论】:

  • 请贴出可以复制粘贴的代码

标签: python


【解决方案1】:

干得好!您的代码几乎是完美的。唯一的错误是第 8 行需要在第 9 行之前运行。您正在更改余额,然后使用更改后的余额来计算最低每月付款。在更新余额之前,您需要计算每个月的最低月供。

希望这会有所帮助!


balance = 4213
annualInterestRate = 0.2
monthlyPaymentRate = 0.04
totalPaid = 0.0

month = 1
minimumMonthlyPayment = balance * monthlyPaymentRate

while month < 13:
    print "Month: " + str(month)
    print "Minimum Monthly Payment: " + str(round(minimumMonthlyPayment, 2))
    minimumMonthlyPayment = balance * monthlyPaymentRate
    balance = (balance - (balance*monthlyPaymentRate))*(1+(annualInterestRate/12))
    print "Remaining Balance: " + str(round(balance, 2))
    totalPaid += minimumMonthlyPayment
    month += 1

print "Total Paid: " + str(round(totalPaid, 2))
print "Remaining Balance: " + str(round(balance, 2))

【讨论】:

    【解决方案2】:

    在计算minimumMonthlyPayment 费率之前,您正在重新计算余额。

    所以balance * monthlyPaymentRate 在第 8 行和第 9 行的金额不同,因为余额发生了变化。

    如果您将balance * monthlyPaymentRate 分配给这些行之前的变量并将其用于两个计算,则可以纠正此问题。

    【讨论】:

    • 很好的建议!谢谢你,亚历克斯,它立即生效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2019-05-07
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    相关资源
    最近更新 更多