<p>这里有一个与你的写作方式非常相似的答案。使用我在询问<a href="https://stackoverflow.com/questions/4518641/how-to-round-off-a-floating-number-in-python/4519044#4519044">how to round off a floating number in python</a>时解释和建议的方法,它使用<code>decimal</code>模块等效的<code>math</code>模块的<code>ceil</code>函数来获得与实践链接相同的答案(除了一些次要的输出格式)。我还将代码重新缩进了更常用的4个空格,并将变量重命名为可读性更强一些。希望你能从中学到一些东西。请注意,我没有</strong>将<code>decimal.getcontext().prec</code>设置为<code>3</code>(我不相信它会像您所想的那样)。在</p>
<pre><code>import decimal
def main():
principle = decimal.Decimal(raw_input('Please enter your loan amount:'))
rate = decimal.Decimal(raw_input('Please enter rate of interest (percent):')) / 100
term = decimal.Decimal(raw_input('Please enter loan period (years):')) * 12
interest = (principle * rate).quantize(decimal.Decimal('.01'), rounding=decimal.ROUND_HALF_EVEN)
balance = principle + interest
payment = (balance / term).quantize(decimal.Decimal('.01'), rounding=decimal.ROUND_CEILING)
print "Payment\t\tAmount Paid\t\tRem.Bal."
for count in range(1+term):
if count == 0:
print count, "\t\t0.00\t\t\t", balance
elif count == term: # last payment?
payment = balance
balance -= payment
print count, "\t\t", payment, "\t\t\t", balance
else:
balance -= payment
print count, "\t\t", payment, "\t\t\t", balance
main()
# > python loan_calc.py
# Please enter your loan amount:100
# Please enter rate of interest (percent):6
# Please enter loan period (years):1
# Payment Amount Paid Rem.Bal.
# 0 0.00 106.00
# 1 8.84 97.16
# 2 8.84 88.32
# 3 8.84 79.48
# 4 8.84 70.64
# 5 8.84 61.80
# 6 8.84 52.96
# 7 8.84 44.12
# 8 8.84 35.28
# 9 8.84 26.44
# 10 8.84 17.60
# 11 8.84 8.76
# 12 8.76 0.00
</code></pre>