75278350@qq.com 发表于 2024-10-10 09:06:21

大神请指教!


请教大神,以下代码中,最后一行的print("现在需要存入的金额:",pv(fv,i,age_n,age_r))为什么不能换成print("现在需要存入的金额:",p)?
这样最初设置P这个变量就没有用了。


def pv(fv,i,age_n,age_r):
    p = round(fv*(1+i)**(age_n-age_r),2)
    return p

while True:
    try:
      fv = float(input("请输入退休时的养老金额:"))
      i = float(input("请输入利率:"))
      age_n = float(input("请输入您现在的年龄:"))
      age_r = float(input("请输入您退休时的年龄:"))
      break
    except:
      print("您的输入有误,请重新输入数值!")
      continue

print("现在需要存入的金额:",pv(fv,i,age_n,age_r))

FishC 发表于 2024-10-10 09:11:40

代码中的 `p` 是局部变量,它只在 `pv` 函数内部存在,并被用于存储计算的结果。在函数外部直接调用 `p` 是不可行的,因为它在外部不存在。

在最后一行中,你尝试用 `p`,会导致错误是因为 `p` 没在这个作用域中定义。如果想在 `print` 中直接使用 `p`,需要在调用 `pv` 函数时先将它的返回值赋给一个变量,如下:

存入金额 = pv(fv, i, age_n, age_r)
print("现在需要存入的金额:", 存入金额)

这样你就可以使用 `存入金额` 变量代替函数调用。最初设置 `p` 作为 `pv` 函数内部的局部变量是为了清晰地表示该值的用途。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 大神请指教!