我是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)
答案 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)