有人能给我解释一下这个python while循环吗?
我是python/编程初学者。我被分配到麻省理工学院开放式课件的一个问题: 编写一个程序,计算最低固定月付款额,以便在12个月内付清信用卡余额 将以下浮点数视为原始输入() 1) 信用卡上的未付余额 2) 以十进制表示的年利率 打印固定的最低付款额、偿还债务所需的月数(最多12个月,可能少于12个月)和余额(可能为负数) 假设利息根据月初的余额按月复利(在该月付款之前)。每月付款必须是10美元的倍数,并且所有月份都相同。请注意,使用此付款方案,余额可能变为负值 答案是:有人能给我解释一下这个python while循环吗?,python,while-loop,Python,While Loop,我是python/编程初学者。我被分配到麻省理工学院开放式课件的一个问题: 编写一个程序,计算最低固定月付款额,以便在12个月内付清信用卡余额 将以下浮点数视为原始输入() 1) 信用卡上的未付余额 2) 以十进制表示的年利率 打印固定的最低付款额、偿还债务所需的月数(最多12个月,可能少于12个月)和余额(可能为负数) 假设利息根据月初的余额按月复利(在该月付款之前)。每月付款必须是10美元的倍数,并且所有月份都相同。请注意,使用此付款方案,余额可能变为负值 答案是: balance = fl
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))
balance=float(原始输入('输入信用卡上的未付余额:'))
利息=浮动(原始输入('以十进制形式输入信用卡年利率:'))
minPay=10
新平衡=平衡
当余额>0时:
对于范围(1,13)内的月份:
新平衡=新平衡*(1+(利息/12))-明付
如果新平衡
else语句的newBalance=balance
部分发生了什么?是否将newBalance分配回1200(原始平衡输入)
是的,就是这样。然后增加minPay
,循环再次开始
随着minPay
在每次迭代中的增加,newBalance
将以负数结束。我强烈建议像python解释器那样检查每一行代码,然后看看为什么程序会按预期执行
如果您对此很懒惰,请尝试在循环本身中放置一个print语句,以查看每个步骤中每个变量的值。这总是帮助我弄清楚代码在做什么
至于你的问题,
是的,新余额确实具有您期望的价值
是的,它确实被重新分配到了balance,在else部分。你可能想改变这个
因为,我不理解代码实际上要做什么,我无法帮助您了解正确的方法是什么,但是尝试添加print语句,这应该会有所帮助。祝你好运 balance=3329
balance = 3329
annualInterestRate = 0.2
minimum_fixed_payment = 10
unpaid_balance = balance
MonthlyInterestRate = annualInterestRate / 12
month_count = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
while balance > 0:
for month in month_count:
unpaid_balance = unpaid_balance - minimum_fixed_payment
interest = MonthlyInterestRate * unpaid_balance
unpaid_balance = unpaid_balance + interest
if unpaid_balance <= 0:
break
if unpaid_balance <= 0:
balance = unpaid_balance
else:
unpaid_balance = balance
minimum_fixed_payment = minimum_fixed_payment + 10
print "Lowest Payment: %s" % (minimum_fixed_payment)
年利率=0.2
最低固定付款额=10
未付余额=未付余额
月利率=年利率/12
月份计数=[1,2,3,4,5,6,7,8,9,10,11,12]
当余额>0时:
对于月中月计数:
未付余额=未付余额-最低固定金额
利息=月利息*未付余额
未付余额=未付余额+利息
如果未付余额,请正确设置代码格式。您还可以通过点击“代码”按钮来格式化内联代码。我将为您编写一段代码。拿一支笔和一张纸,开始像python一样解释代码。换一种方式看。如果最低付款额不足以在分配的时间内支付余额,会发生什么情况?@zerkms,也称为试运行。考虑到你在wetware上运行这个程序,这个名字很奇怪。@gnibbler:现在我知道了它的正确“营销”名称,谢谢:-)谢谢你Himanshu。我将在将来使用print语句来帮助调试过程。感谢rotoglup的输入。