2014-11-25 62 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))