假设有以下代码检查数字的相乘数字是否等于输入数字:
results = [a for a in range(10) if a == input]
results += [a*b for a in range(10) for b in range(10) if a*b == input]
results += [a*b*c for a in range(10) for b in range(10) for c in range(10) if a*b*c == input]
...
我希望它进行更改,以便在尚未找到结果的情况下动态地继续搜索匹配项。所以:
- 如果一位数没有产生结果,请继续使用两位数
- 如果两位数没有产生结果,请继续使用三位数
- 等等 ...
我想以一种优雅的方式做到这一点,如果不是太内卷的话,即使是单线。如果根本没有匹配项,我还需要一个中断条件来避免无限循环。例如,如果输入是一个大于 10 的素数,则没有结果。中断条件应该是这样的:
if(math.pow(2, countOfDigits) > input):
return
其中countOfDigits
是当前在嵌套列表理解中检查的位数。换句话说,我的初始示例的第一行表示countOfDigits == 1
,第二行countOfDigits == 2
和第三行countOfDigits == 3
。