Python (当前值)我如何逐个复制2个范围?
我正在计算现值。 我试着用范围乘以范围。 但它最终会以这样的方式结束Python (当前值)我如何逐个复制2个范围?,python,Python,我正在计算现值。 我试着用范围乘以范围。 但它最终会以这样的方式结束 c = input("cash flow :") n = int(input("how many years :")) r = 0.1 cf = c.split() cf_sum = [0] * n for i in range(n): for n in range(1,n+1): cf[i] = float(cf[i]) PV = cf[i]
c = input("cash flow :")
n = int(input("how many years :"))
r = 0.1
cf = c.split()
cf_sum = [0] * n
for i in range(n):
for n in range(1,n+1):
cf[i] = float(cf[i])
PV = cf[i]/((1+r) * n)
print(PV)
cf_sum[i] = float(cf_sum[i])
cf_sum[i] += PV
print(cf_sum)
cash flow :100 200 300
how many years :3
90.9090909090909
45.45454545454545
30.3030303030303
181.8181818181818
90.9090909090909
60.6060606060606
272.7272727272727
136.36363636363635
90.9090909090909
[166.66666666666669, 333.33333333333337, 499.9999999999999]
答案应该是这样的:
PV=100/(1.1)+200/(1.1)^2+300/(1.1)^3
我还遇到了float和list不能相乘的问题。
我是python初学者,如果有人能帮助我,我将非常感激
cf = input("cash flow :").split()
n = int(input("how many years :"))
r = 0.1
cf_sum = 0
for i in range(n):
PV = eval(cf[i])/(1+r)**(i+1)
print(PV)
cf_sum += PV
print("Net Present Value:",cf_sum)
The result
cash flow :100 200 300
how many years :3
90.9090909090909
165.2892561983471
225.39444027047327
Net Present Value: 481.59278737791124
注:*对于乘法,**对于幂我可以看到提供的代码存在一些问题。第一个是使用名为n的变量。它首先用于保存年数,然后用作嵌套循环中的迭代变量,也用作范围函数的参数。这使得很难看到n在做什么,因为n在嵌套循环中发生了变化,所以外部循环中的迭代次数也发生了变化 这不是唯一的问题。从项目的总体流程来看,似乎假设输入的年数等于在“现金流”提示下输入的空格分隔列表的长度。这使得数据更难处理,因为您必须拆分列表并希望用户输入的内容有效
如果可能的话,先询问年数,然后在循环中询问现金流值,这样就可以得到适用年份的每个现金流值。这允许您进行乘幂和除法运算,将结果放入列表中,然后在循环外对列表求和以结束程序。我不知道您试图创建的是哪种循环,但我可以看出您做错了。例如,名为n的变量太多。n的值非常不稳定,可能需要重命名其中的一些n。另外,如果我依赖于n,并且n本身在每个循环中都会改变,那么你的内部循环和外部循环应该交换。非常感谢你的回答!我不知道它能用如此简洁的方式表达。我非常感谢你的帮助。谢谢你这么实用的建议!我将重新考虑变量的使用和重新编程。