我是一个python/编程初学者。我被分配了一个麻省理工学院开放式课件的问题:
写一个程序,计算每月最低固定付款,以便在12个月内还清信用卡余额。在
将以下浮点数视为raw_input():
1)信用卡余额
2) 以十进制表示的年利率
打印出固定的最低还款额、偿还债务所需的月数(最多12个月,可能少于12个月)以及余额(可能是负数)。在
假设利息按照月初的余额按月复利(在当月付款之前)。每月付款必须是10美元的倍数,并且所有月份都相同。请注意,使用此付款方案,余额可能变为负数。在
答案是:balance = float(raw_input('Enter the outstanding balance on your credit card: '))
interest = float(raw_input('Enter the annual credit card interest rate as a decimal: '))
minPay = 10
newBalance = balance
while balance > 0:
for month in range(1,13):
newBalance = newBalance*(1+(interest/12))-minPay
if newBalance <=0:
break
if newBalance <= 0:
balance = newBalance
else:
newBalance = balance
minPay = minPay+10
print 'RESULT'
print 'Monthly payment to pay off debt in 1 year: ' + str(minPay)
print 'Number of months needed: ' + str(month)
print 'Balance: ' + str(round(balance,2))
我的问题:
1)原始投入余额1200,利率0.18。有人能用语言解释一下你是如何到达minPay=120,month=11,balance=-10.05的吗?在
我被newBalance=newBalance*(1+(利息/12))-minPay弄糊涂了。在
使用1200作为天平将使newBalance=1200*(1+(.18/12))-10=1218-10=1208。在
2)由于newBalance不是<;=0,因此程序将继续执行else语句。else语句的newBalance=balance部分发生了什么。这是否将newBalance分配回1200(原始余额输入)。在
我理解这个问题有些困难。任何有见识的人都会感激的。在