【发布时间】:2018-10-13 23:53:59
【问题描述】:
我写了以下代码,它的输出是正确的,即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
谢谢
【问题讨论】:
标签: python python-3.x loops