我编写了以下代码,其输出是正确的35
。
def ant(z, O_m, O_D):
return 1/(O_m * (1 + z)**3 + O_D)**(0.5)
def cc(k, H0, O_m, O_D):
HH = H0 * (1/ant(zcc[k], O_m, O_D))
hd =((Hcc[k] - HH)/sigcc[k])**2
return hd
num = 0
for j in range(len(zcc)):
num = num + cc(j, H0, O_m, O_D)
print(num) #35
但是当我将其放入循环中时,它只会打印循环的第一个数字0.02
def ccD(H0, O_m, O_D):
for j in range(len(zcc)):
num = 0
num = num + cc(j, H0, O_m, O_D)
return num
print(ccD(70, 0.3, 0.7)) #0.02
我在这里写数据:
zcc, Hcc, sigcc=np.genfromtxt('cc.txt',unpack=True)
0.0708 69 19.68
0.09 69 12
0.12 68.6 26.2
0.17 83 8
0.179 75 4
0.199 75 5
0.2 72.9 29.6
0.240 79.69 2.65
0.27 77 14
0.28 88.8 36.6
0.35 84.4 7
0.352 83 14
0.38 81.5 1.9
0.3802 83 13.5
0.4 95 17
0.4004 77 10.2
0.4247 87.1 11.2
0.43 86.45 3.68
0.44 82.6 7.8
0.4497 92.8 12.9
0.47 89 67
0.4783 80.9 9
0.48 97 62
0.51 90.4 1.9
0.57 92.4 4.5
0.593 104 13
0.6 87.9 6.1
0.61 97.3 2.1
0.68 92 8
0.73 97.3 7
0.781 105 12
0.875 125 17
0.88 90 40
0.9 117 23
1.037 154 20
1.3 168 17
1.363 160 33.6
1.43 177 18
1.53 140 14
1.75 202 40
1.965 186.5 50.4
2.34 222 7
2.336 226 8
谢谢
答案 0 :(得分:3)
您不小心将// transfer children from chunkLarge to chunkLarge2
chunkLarge2.getChildren().addAll(chunkLarge.getChildren());
// note that you're not iterating over chunkLarge's children list
// (addAll method will make a copy and work with it),
// so it's safe to let the children be automatically deleted
放在了num = 0
循环中,这意味着for
每次都会被重置。还会返回第一个值,因为您将num
语句缩进到了return
循环中。
这就是您想要的:
for
答案 1 :(得分:1)
您的return语句位于for循环内,因此它将仅迭代一次。将return语句放在for循环之外。正如我上方的人指出的那样,也将num=0
放在for循环之外。
def ccD(H0, O_m, O_D):
num = 0
for j in range(len(zcc)):
num = num + cc(j, H0, O_m, O_D)
return num