0

我在while循环中尝试做的是用整数10迭代付款,这样如果整数(g)CBalance <= 0在12个月内未能获得,那么所有变量都会重置,除了g,它会上升由 1。

Balance = float(raw_input('Enter Balance '))
Rate = float(raw_input('Enter interest rate '))
monthlyI = Rate/12
month = 0
g = 1
Payment = 10
CBalance = Balance
while CBalance > 0:
    Payment = Payment*g
    month += 1
    CBalance = CBalance *(1+ monthlyI)- Payment
    if month > 12:
        month = 0
        g += 1
        Cbalance = Balance
4

2 回答 2

1

我想我终于明白你的问题是什么以及导致问题的原因 - 即变量名的简单拼写错误。if要修复它,只需将while循环中的语句的最后一行更改为:

        if month > 12:
            month = 0
            g += 1
            Cbalance = Balance

至:

        if month > 12:
            month = 0
            g += 1
            CBalance = Balance  # note corrected spelling of variable name on left

这就解释了为什么所有的值都没有被重置。如果您明确提到它在您的问题中是哪个变量(如果您知道的话),那将会很有帮助。无论如何,当您使用大写和混合大小写变量名称时,这种事情更有可能发生。

出于这个原因,许多程序员试图避免使用它们,特别是对于像 Python 这样的语言,您通常不必在使用它们之前声明变量。您可能想查看 PEP 8 样式指南的命名约定部分。

于 2013-01-05T21:58:59.953 回答
0

我在while循环中尝试做的是将付款迭代10的整数,以便如果该整数(g)在12个月内未能获得CBalance <= 0,则除g之外的所有变量都会重置, 增加 1。

我认为正在发生的事情是,每次运行此程序时,您都会得到:

Payment = 10 * 1 //First while payment = 10

第二次

Payment = 10 * 1 //payment = 10 again.

结果是:

  CBalance = CBalance * (1 + monthlyI) - 10

哪个永远不会变成负值,这是结束循环所必需的?

虽然您可能想要:

counter = 1;
while CBalance > 0:
   Payment = Payment*counter
   month += 1
   counter += 1
   CBalance = CBalance *(1+ monthlyI)- Payment
   if month > 12:
      month = 0
      counter = 1
      g += 1
      Cbalance = Balance
于 2013-01-05T20:12:54.570 回答