如何使用循环中的变量结束while循环

2024-09-30 03:23:24 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,我对编程相当陌生,我有一个挑战,我就是不能完全理解。我需要计算出一个人用设定的利率和付款率还清信贷计划需要多长时间。这段代码有两个部分我似乎无法理解。第一个是如何在endingBalance等于0时停止while循环。因为我不能在while条件下使用endingBalance,所以我不确定如何停止它,所以我只添加了一个24的占位符。我面临的另一个问题是如何让结束平衡不再陷入消极。我想我需要做一个if声明,当起始平衡小于原则时,原则等于起始平衡,但在这一点上我不确定如何做到这一点。我只需要在这两个问题上得到一些帮助,任何帮助都将不胜感激

DOWN_PAYMENT_RATE = 0.1
INTEREST_RATE = 0.12
PAYMENT_RATE = 0.05
balance = price - (price * DOWN_PAYMENT_RATE)
payment = balance * PAYMENT_RATE
print("%0s%18s%13s%13s%12s%16s" % \
    ("Month", "Starting Balance", "Interest", "Principle", "Payment", "Ending Balance"))
count = 1
while count != 24:
    interest = balance * INTEREST_RATE / 12
    principle = payment - interest
    endingBalance = balance - principle 
    print("%2d%14.2f%18.2f%13.2f%12.2f%12.2f" % \
        (count, balance, interest, principle, payment, endingBalance)) 
    balance = endingBalance
    if balance > principle:
        principle = principle
    else:
        principle = balance
    count += 1

Tags: ifratecountpaymentpricedownprintbalance
3条回答

您可以先用任意随机+ve整数在循环时声明'endingBalance',因为它不会产生任何影响。 因为在while循环中,无论其初始值如何,它都会发生变化

DOWN_PAYMENT_RATE = 0.1
INTEREST_RATE = 0.12
PAYMENT_RATE = 0.05
balance = price - (price * DOWN_PAYMENT_RATE)
payment = balance * PAYMENT_RATE
print("%0s%18s%13s%13s%12s%16s" % \
    ("Month", "Starting Balance", "Interest", "Principle", "Payment", "Ending Balance"))
count = 1
endingBalance = 100
while endingBalance > 0:
    interest = balance * INTEREST_RATE / 12
    principle = payment - interest
    endingBalance = balance - principle 
    print("%2d%14.2f%18.2f%13.2f%12.2f%12.2f" % \
        (count, balance, interest, principle, payment, endingBalance)) 
    balance = endingBalance
    if balance > principle:
        principle = principle
    else:
        principle = balance
    count += 1

正如其他人已经说过的,您必须更改while循环。此外,如果您不希望期末余额为负数,则应在principle = payment - interest行中添加机会

price=2000
DOWN_PAYMENT_RATE = 0.1
INTEREST_RATE = 0.12
PAYMENT_RATE = 0.05
balance = price - (price * DOWN_PAYMENT_RATE)
payment = balance * PAYMENT_RATE
print("%0s%18s%13s%13s%12s%16s" % \
    ("Month", "Starting Balance", "Interest", "Principle", "Payment", "Ending Balance"))
count = 1
while balance>0:
    interest = balance * INTEREST_RATE / 12
    principle = min(payment - interest,balance)
    endingBalance = balance - principle 
    print("%2d%14.2f%18.2f%13.2f%12.2f%12.2f" % \
        (count, balance, interest, principle, payment, endingBalance)) 
    balance = endingBalance
    if balance > principle:
        principle = principle
    else:
        principle = balance
    count += 1

您只需更新while循环中的条件,如下所示:

DOWN_PAYMENT_RATE = 0.1
INTEREST_RATE = 0.12
PAYMENT_RATE = 0.05
balance = price - (price * DOWN_PAYMENT_RATE)
payment = balance * PAYMENT_RATE
print("%0s%18s%13s%13s%12s%16s" % \
    ("Month", "Starting Balance", "Interest", "Principle", "Payment", "Ending Balance"))
count = 1
endingBalance = balance
while endingBalance > 0:
    interest = balance * INTEREST_RATE / 12
    principle = payment - interest
    endingBalance = balance - principle
    if endingBalance <= 0:
        break
    print("%2d%14.2f%18.2f%13.2f%12.2f%12.2f" % \
        (count, balance, interest, principle, payment, endingBalance)) 
    balance = endingBalance
    if balance > principle:
        principle = principle
    else:
        principle = balance
    count += 1

while循环中使用上述条件时,循环将只执行到endingBalance>0且永远不会为负值

相关问题 更多 >

    热门问题