添加不会发生在循环中

时间:2018-02-17 11:42:39

标签: python loops

我是python的新手,所以我知道这是一个基本的问题,但是如果你看一下代码,就不会在循环中添加。每次乘法完成并打印答案。你能告诉我我做错了什么吗?它应该首次输出10000,下一个输出20000,因为cr将保存上一次迭代后的10000,对吗?它是一种实现总结和产品的方式。

import math


#running cost
def RunningCostofVNF(cm, qm):
    cm = 5000
    qm = 2
    datacenters = [1,2]
    numberofVNFs = [1,2]

    for i in datacenters:
        for m in numberofVNFs:
            cr = cm * qm
            #cr = cr+cr
            print cr
    return    
#        print cr
 #   print cr
  #  return cr

RunningCostofVNF(1,1)

Image

5 个答案:

答案 0 :(得分:1)

此行cr = cm * qm作业声明。每次循环时,代码都会计算一个新值(始终为10000)并将其分配给cr,从而丢弃之前的值。它确实具有前一次迭代中的10000,但只能达到重新分配它的点。

如果要在cr中累积计算值,则需要更改代码,使其不会每次都重新计算,而是每次循环时累积一个值:

cr = 0
for i in datacenters:
    for m in numberofVNFs:
        cr += cm * qm
        print cr

答案 1 :(得分:0)

你遇到的问题是它基本上贯穿了每次运行相同乘法的双循环(cm * qm)并且每次都用结果覆盖cr的值。

如果您希望从上一次迭代中保存cr的值,那么您需要将其存储为初始变量,然后在每次循环迭代时增加它。将代码更改为类似于下面的内容将实现此目的:



cr = 0
for i in datacenters:
    for m in numberofVNFs:
        cr += cm * qm
        #cr = cr+cr
        print cr
return




答案 2 :(得分:0)

cr总是5000次2(cm qm) 我想它应该像我 m * qm或其他

答案 3 :(得分:0)

为你参考: -

cr = 0
for i in datacenters:
    for m in numberofVNFs:
        value = cm * qm
        cr +=value 
        print (cr)
return   

答案 4 :(得分:0)

你应该用零来初始化'cr'变量,并在新的迭代中使用'cr'的前一个迭代值,这样你就可以得到正确的答案。

我也附上了代码的输出。

import math

#running cost
def RunningCostofVNF(cm, qm):
    cm = 5000
    qm = 2
    cr = 0
    datacenters = [1,2]
    numberofVNFs = [1,2]

    for i in datacenters:
        for m in numberofVNFs:
            cr =cr + cm * qm
            #cr = cr+cr
            print(cr)
    return    
#        print cr
 #   print cr
  #  return cr

RunningCostofVNF(1,1)

enter image description here