编写循环insid函数更改输出

时间:2018-10-13 23:53:59

标签: python python-3.x loops

我编写了以下代码,其输出是正确的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

谢谢

2 个答案:

答案 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