我无法得到预期的结果

时间:2015-04-07 18:09:10

标签: python python-3.x

我编写了一个程序,该程序使用while循环来确定投资在给定利率下翻倍所需的时间。投入将是年化利率,产出是投资加倍所需的年数,但无论我投入的是什么,我都会得到1:

def main():
    I= eval(input("Enter your annualized interest rate: "))
    i=0
    z=1
    while z<2:
        i=i+1
        z=(z*(1+I))
    if z>=2:
        print (i)

2 个答案:

答案 0 :(得分:0)

您应该删除eval并将其替换为intfloat,具体取决于利率或整数:

I = float(input("Enter your annualized interest rate: "))

然后将百分比除以100:

z = z * (1 + I / 100.0)

您也不需要上一个if语句,因为z总是大于或等于2才能退出while循环。

答案 1 :(得分:0)

@Selcuk的回答非常好,这是我接受的。 现在,由于我写了几行,这里有一些代码可以派上用场:

from sys import argv

def f(I, factor):
    I = 1 + I/100.0
    z = 1
    years = 0
    while z < factor:
        z *= I
        years += 1
    return years


if __name__ == "__main__":
    if len(argv) < 3:
        print "usage: %s rate factor"
        exit(1)
    I = float(argv[1])
    factor = float(argv[2])
    print f(I, factor)