2014-03-01 76 views
0

我最近遇到了這個python代碼片段,有人能告訴我return語句中for循環做什麼?需要幫助瞭解Python代碼片段。

def dec(num, num_dig): 
    if num_dig==0: 
     return int(num==1) 
    else: 
     return sum(dec(num/i, num_dig-1) for i in range(1,10) if num/i*i==num) 

顯然,問題是關於找到否。產品等於N的x位數字。 預先感謝

回答

2

for循環被稱爲生成器表達式,類似於列表理解。 您可以認爲它是通過取1到9之間的所有數字來生成一個數字列表,只將那些條件爲num/i*i==num爲真的數字,然後使用表達式dec(num/i, num_dig-1)轉換這些數字。

然後所有這些最終數字的總和被採取。

另一種方式來寫這個,這是更詳細和更小Python的,但如果你從系統的語言可能會更清楚的是:

total = 0 
for i in range(1,10): 
    if num/i*i == num: 
    total += dec(num/i, num_dig-1) 
return total