2014-11-25 45 views
0

我在return有一些麻烦。我想将函数生成的数字添加到已创建的列表中,但是当我返回时,我只获得一个值,但如果我使用print,则很好。返回python错误只返回一个值

return只产生一个值吗?

def aFunction(n): 
    for j in range(2,n): 
     for i in range(2,j): 
      if (j % i ==0): 
       break 
      else: 
       return(j) 
       break 
print(aFunction(10)) 

确定,所以此时我已编辑略代码,如何使用p如果没有其余部分保持我可以将其附加到p来整除n(这是一个int),使得?

def function(n): 
     p = [2,] 
     for j in range(3,n): 
      if (j // p) == 0: 
       p.append(j) 
     return(p) 
    print(function(20)) 
+0

如果您告诉return返回一个值,它将返回一个值。 – acushner 2014-11-25 14:17:42

回答

0

因为return终止函数并返回值。

您应该将这些值添加到列表中,然后打印列表:

def aFunction(n): 
    l = [] 
    for j in range(2,n): 
     i in range(2,j): 
      if (j % i != 0): 
       l.append(j) 
    return l 

print(aFunction(10)) 

在Python中,你可以写出更好的代码:

[j for j in range(2,n) for i in range(2,j) if j % i != 0] 
2

因为return终止功能,所以当条件去else子句,它终止函数,

使用generators: -

def aFunction(n): 
    for j in range(2,n): 
     for i in range(2,j): 
      if j % i == 0: 
       break 
      else: 
       yield j 
       break 

print list(aFunction(10))