【问题标题】:How to end a while loop with a variable inside the loop如何用循环内的变量结束while循环
【发布时间】:2021-11-09 08:01:48
【问题描述】:

嘿,我对编程还很陌生,我遇到了一个我无法完全解决的挑战。我需要弄清楚某人以设定的利率和付款率还清信贷计划需要多长时间。这段代码有两部分我似乎无法弄清楚。第一个是当endingBalance等于0时如何停止while循环。由于我不能在while条件下使用endingBalance我不知道如何停止它所以我只放了一个占位符24。另一个问题我' m有是如何让endingBalance停止进入负数。我认为当起始余额小于原则时,我需要为原则做一个 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

【问题讨论】:

  • while balance > 0:?
  • if(endingBalance==0) break ?

标签: python if-statement while-loop


【解决方案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&gt;0 并且永远不会是负值

【讨论】:

    【解决方案2】:

    正如其他人已经说过的,您必须更改您的 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
    

    【讨论】:

      【解决方案3】:

      你可以在 while 循环外声明 'endingBalance',首先使用任何随机的 +ve 整数,因为它不会产生任何影响。 因为在 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
      

      【讨论】:

        猜你喜欢
        • 2016-01-12
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 2016-04-24
        • 1970-01-01
        • 1970-01-01
        • 2014-04-20
        • 2014-10-31
        相关资源
        最近更新 更多