Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能给我解释一下这个python while循环吗?_Python_While Loop - Fatal编程技术网

有人能给我解释一下这个python while循环吗?

有人能给我解释一下这个python while循环吗?,python,while-loop,Python,While Loop,我是python/编程初学者。我被分配到麻省理工学院开放式课件的一个问题: 编写一个程序,计算最低固定月付款额,以便在12个月内付清信用卡余额 将以下浮点数视为原始输入() 1) 信用卡上的未付余额 2) 以十进制表示的年利率 打印固定的最低付款额、偿还债务所需的月数(最多12个月,可能少于12个月)和余额(可能为负数) 假设利息根据月初的余额按月复利(在该月付款之前)。每月付款必须是10美元的倍数,并且所有月份都相同。请注意,使用此付款方案,余额可能变为负值 答案是: balance = fl

我是python/编程初学者。我被分配到麻省理工学院开放式课件的一个问题:

编写一个程序,计算最低固定月付款额,以便在12个月内付清信用卡余额

将以下浮点数视为原始输入()

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))
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的输入。