Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python (当前值)我如何逐个复制2个范围?_Python - Fatal编程技术网

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本身在每个循环中都会改变,那么你的内部循环和外部循环应该交换。非常感谢你的回答!我不知道它能用如此简洁的方式表达。我非常感谢你的帮助。谢谢你这么实用的建议!我将重新考虑变量的使用和重新编程。