我最近遇到过这个python片段,有人可以告诉我return语句中的for循环是做什么的吗?
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位数字。 提前谢谢
答案 0 :(得分:2)
for循环称为生成器表达式,类似于列表推导。
您可以将其视为生成数字列表,方法是将所有数字设置为1到9(包括1和9),仅采用条件num/i*i==num
为真的数字,然后使用表达式dec(num/i, num_dig-1)
转换这些数字。
然后取所有这些最终数字的总和。
另一种写这种方式的方法,更简洁,更少Pythonic但如果你来自系统语言可能会更清楚:
total = 0
for i in range(1,10):
if num/i*i == num:
total += dec(num/i, num_dig-1)
return total