Python for循环计数器错误

-3 投票
7 回答
1697 浏览
提问于 2025-04-16 01:49

我正在尝试写一段简单的代码,来计算由于每天的利息,存款达到某个金额需要多少天。下面的代码在IDLE中运行时没有报错,但计数器的结果却是0。请问我可能遗漏了什么?

def main():
    # irrelevant code elided by msw, Bal, Int and Tar are numeric
    counter = 0
    for i in range(0):
        if (Bal * Int) == Tar:
            print '1'
        else:
            counter + 1
    print counter

7 个回答

2
In [5]: def test():
   ...:     for i in range(0):
   ...:         return '1'
   ...:     
   ...:     

In [6]: x = test()

In [7]: print x
------> print(x)
None

看到返回值是'None'。我不太清楚你想做什么。不过基本的错误在于你使用的range(x)函数的参数。range(0)总是返回一个空列表。

3

我认为计算带利息的最终余额的公式是:

Final = Principal * ( 1 + interest ) ** interest_period

假设我这个理解是对的,那么你可以通过以下方式找出需要多少个利息周期:

def how_long(start_money, interest_rate, final_money):
    day = 0
    money = start_money
    while True:
        if money >= final_money:
            break
        day += 1
        money = start_money * (1 + interest_rate)**day

    return day, money
6

我不太明白你这个循环想表达什么:

for i in range(0):
    if (Bal * Int) == Tar:
        print '1'
    else:
        counter + 1
  1. range(0) 是一个空列表,所以这个循环根本不会执行。
  2. counter + 1 只是计算比 counter 多 1 的值,并不会让 counter 增加,你可能是想用 counter += 1
  3. 循环里面没有任何东西在每次运行时会改变,所以如果你真的进入了这个循环,它会变成一个无限循环。

撰写回答