2014-03-01 81 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