未来价值的修改

2024-10-17 06:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

为此,您必须在计算当年利息之前,将年度供款添加到年初(本金总额)。在

我卡住了,需要帮助。到目前为止,我得到的是:

def main(): 

    print("Future Value Program - Version 2")
    print()
    principal = eval(input("Enter Initial Principal:"))
    contribution = eval(input("Enter Annual Contribution:"))
    apr = eval(input("Enter Annual Percentage Rate (decimal):"))
    yrs = eval(input("Enter Number of Years:"))
    for k in range (1, yrs):
        principal= principal * (1 + apr)
    print()
    print( yrs,) ": Amount $", int(principal * 100 + 0.5)/100)

main()

应该是这样的:

^{pr2}$

Tags: principalinputmaindefevalaprprintenter
1条回答
网友
1楼 · 发布于 2024-10-17 06:18:41

下面是一个产生预期输出的工作示例:

def main(): 
    print("Future Value Program - Version 2")
    print()
    principal = float(input("Enter Initial Principal: "))
    contribution = float(input("Enter Annual Contribution: "))
    apr = float(input("Enter Annual Percentage Rate (decimal): "))
    yrs = int(input("Enter Number of Years: "))
    print()
    for yr in range(1, yrs + 1):
        principal += contribution
        principal = int(((principal * (1 + apr)) * 100) + 0.5) / 100
        print("Year {0}: Amount $ {1}".format(yr, principal))
    print()
    print("The value in {0} years is $ {1}".format(yrs, principal))

if __name__ == '__main__':
    main()

问题中的例子有几个问题:

  1. 第12行print语句中的语法错误。用parens调用print意味着所有参数都应该包含在parens中。Python将错误的paren解释为传递给print的参数的结尾。在
  2. 正如其他人所指出的,您不应该对输入调用eval。对浮点数调用float,对整数调用int。在
  3. range运算符有一个off by one错误。在
  4. 正如其他人所指出的,print是在循环之外调用的,因此主体的中间状态不会被输出。在
  5. 就基础数学而言,增加贡献似乎被忽略了。在
  6. 根据预期的输出,缺少最后的print。在

相关问题 更多 >