如何更新循环中的单个变量?

时间:2013-01-05 19:56:13

标签: python loops

我在while循环中尝试做的是按10的整数迭代付款,这样如果整数(g)在12个月内无法获得CBalance <= 0那么所有的变量重置除了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

2 个答案:

答案 0 :(得分: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

这解释了为什么没有重置所有值。如果您明确提到问题中的哪个变量,如果您知道它,那将会有所帮助。无论如何,当你正在使用Capitalized和mixedCase变量名时,更有可能发生这种事情。

许多程序员因为这个原因试图避免使用它们,尤其是像Python这样的语言,在使用它们之前通常不需要声明变量。您可能需要查看PEP 8风格指南的Naming Conventions部分。

答案 1 :(得分:0)

  

我在while循环中尝试做的是按10的整数重复付款,这样如果整数(g)在12个月内无法获得CBalance&lt; = 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