我是Python的新手,我目前仍然坚持这个学习问题。
我正在尝试制作一个程序,它将输出支付信用卡余额所需的10的最低公倍数。每笔付款每月支付一次,每月必须相同,以满足问题的要求,并且还必须考虑月度利息。
def debt(payment):
balance = 3329
annualInterestRate = 0.2
month = 1
finalbalance = balance
while month <= 12:
#Monthly interest rate
rate=(annualInterestRate / 12.0)
#Monthly unpaid balance
finalbalance = round(finalbalance - payment,2)
#Updated balance each month
finalbalance = round(finalbalance + (rate * finalbalance),2)
#Moves month forward
month = month + 1
#Shows final fingures
print('Lowest Payment: ' + str(payment))
debt(10)
上述情况正常,但事实上我缺乏一种机制,在最终余额小于零之前提供更多的十倍数。
我在这里发布了一个类似的问题,我删除了不同的代码,因为我觉得它无法进入任何地方,无论如何我随后重写了代码。
答案 0 :(得分:0)
如果是这样,那么你需要重构你的功能。而不是付款,使用余额作为参数。您的功能应该输出您的付款,而不是将其作为参数。然后,由于你每月都这样做,最终的产出(不管它是什么)将大于余额/ 12,因为这将是你如何支付核心债务而没有利息。
所以,现在我们去找最糟糕的事情。整个余额未付加利息。那将是(年利率x余额)+余额。除以12,你得到你应该每月支付的最高金额。
在那里,既然你有你的最小值和最大值,你就有一个循环的起点和终点。只需为每个循环的付款添加1,直到您获得支付所包含权益的最低金额。