Я написал следующий код, его вывод правильный: 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
спасибо