半小时挑战九行代码(程序员试金石)
挑战题:
编写一个在1,2,3,…,n(顺序不能变,n>=3)数字之间插入+或-或什么都不插入,使得计算结果为0的程序,并输出所有的可能性。
例如n=9时,1-23-4-56-7+89=0是一种可能性。
解题思路:
首先,把1-n当成字符,将‘+’或’-’或’’字符插入到规定位置,获取字符串表达式,生成所有组合,用到itertools 模块中的product组合生成器。
其次,使用eval函数计算字符串表达式,筛选出计算结果为0的所有表达式并打印。
from itertools import product
n = int(input