我在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
答案 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