Форум сайта python.su
0
Добрый день
Подскажите пожалуйста как лучше реализовать
перебор арифметических операций в сложных математических формулах, где много арифметических действий.
например выражение 1 x 2 x 3 x 4 x 5 необходимо x менять на различные операции, перебирая все возможные варианты.
Офлайн
186
>>> from operator import mul >>> from operator import add >>> def calc(operator): ... return reduce(operator, [1,2,3,4]) ... >>> calc(add) # Сожение 10 >>> calc(mul) # Умножение 24
Офлайн
857
wadifi
например выражение 1 x 2 x 3 x 4 x 5 необходимо x менять на различные операции
>>> import itertools >>> >>> expr_fmt = '1 {} 2 {} 3 {} 4 {} 5' >>> >>> for i in itertools.product('+-*/', repeat=4): ... expr = expr_fmt.format(*i) ... print(expr, '=', eval(expr)) ... 1 + 2 + 3 + 4 + 5 = 15 1 + 2 + 3 + 4 - 5 = 5 1 + 2 + 3 + 4 * 5 = 26 1 + 2 + 3 + 4 / 5 = 6.8 1 + 2 + 3 - 4 + 5 = 7 1 + 2 + 3 - 4 - 5 = -3 1 + 2 + 3 - 4 * 5 = -14 1 + 2 + 3 - 4 / 5 = 5.2 1 + 2 + 3 * 4 + 5 = 20 1 + 2 + 3 * 4 - 5 = 10 1 + 2 + 3 * 4 * 5 = 63 1 + 2 + 3 * 4 / 5 = 5.4 1 + 2 + 3 / 4 + 5 = 8.75 1 + 2 + 3 / 4 - 5 = -1.25 1 + 2 + 3 / 4 * 5 = 6.75 1 + 2 + 3 / 4 / 5 = 3.15 1 + 2 - 3 + 4 + 5 = 9 1 + 2 - 3 + 4 - 5 = -1 1 + 2 - 3 + 4 * 5 = 20 1 + 2 - 3 + 4 / 5 = 0.8 1 + 2 - 3 - 4 + 5 = 1 1 + 2 - 3 - 4 - 5 = -9 1 + 2 - 3 - 4 * 5 = -20 1 + 2 - 3 - 4 / 5 = -0.8 1 + 2 - 3 * 4 + 5 = -4 1 + 2 - 3 * 4 - 5 = -14 1 + 2 - 3 * 4 * 5 = -57 1 + 2 - 3 * 4 / 5 = 0.6000000000000001 1 + 2 - 3 / 4 + 5 = 7.25 1 + 2 - 3 / 4 - 5 = -2.75 1 + 2 - 3 / 4 * 5 = -0.75 1 + 2 - 3 / 4 / 5 = 2.85 1 + 2 * 3 + 4 + 5 = 16 1 + 2 * 3 + 4 - 5 = 6 1 + 2 * 3 + 4 * 5 = 27 1 + 2 * 3 + 4 / 5 = 7.8 1 + 2 * 3 - 4 + 5 = 8 1 + 2 * 3 - 4 - 5 = -2 1 + 2 * 3 - 4 * 5 = -13 1 + 2 * 3 - 4 / 5 = 6.2 1 + 2 * 3 * 4 + 5 = 30 1 + 2 * 3 * 4 - 5 = 20 1 + 2 * 3 * 4 * 5 = 121 1 + 2 * 3 * 4 / 5 = 5.8 1 + 2 * 3 / 4 + 5 = 7.5 1 + 2 * 3 / 4 - 5 = -2.5 1 + 2 * 3 / 4 * 5 = 8.5 1 + 2 * 3 / 4 / 5 = 1.3 1 + 2 / 3 + 4 + 5 = 10.666666666666666 1 + 2 / 3 + 4 - 5 = 0.6666666666666661 1 + 2 / 3 + 4 * 5 = 21.666666666666668 1 + 2 / 3 + 4 / 5 = 2.466666666666667 1 + 2 / 3 - 4 + 5 = 2.6666666666666665 1 + 2 / 3 - 4 - 5 = -7.333333333333334 1 + 2 / 3 - 4 * 5 = -18.333333333333332 1 + 2 / 3 - 4 / 5 = 0.8666666666666665 1 + 2 / 3 * 4 + 5 = 8.666666666666666 1 + 2 / 3 * 4 - 5 = -1.3333333333333335 1 + 2 / 3 * 4 * 5 = 14.333333333333332 1 + 2 / 3 * 4 / 5 = 1.5333333333333332 1 + 2 / 3 / 4 + 5 = 6.166666666666667 1 + 2 / 3 / 4 - 5 = -3.833333333333333 1 + 2 / 3 / 4 * 5 = 1.8333333333333333 1 + 2 / 3 / 4 / 5 = 1.0333333333333334 1 - 2 + 3 + 4 + 5 = 11 1 - 2 + 3 + 4 - 5 = 1 1 - 2 + 3 + 4 * 5 = 22 1 - 2 + 3 + 4 / 5 = 2.8 1 - 2 + 3 - 4 + 5 = 3 1 - 2 + 3 - 4 - 5 = -7 1 - 2 + 3 - 4 * 5 = -18 1 - 2 + 3 - 4 / 5 = 1.2 1 - 2 + 3 * 4 + 5 = 16 1 - 2 + 3 * 4 - 5 = 6 1 - 2 + 3 * 4 * 5 = 59 1 - 2 + 3 * 4 / 5 = 1.4 1 - 2 + 3 / 4 + 5 = 4.75 1 - 2 + 3 / 4 - 5 = -5.25 1 - 2 + 3 / 4 * 5 = 2.75 1 - 2 + 3 / 4 / 5 = -0.85 1 - 2 - 3 + 4 + 5 = 5 1 - 2 - 3 + 4 - 5 = -5 1 - 2 - 3 + 4 * 5 = 16 1 - 2 - 3 + 4 / 5 = -3.2 1 - 2 - 3 - 4 + 5 = -3 1 - 2 - 3 - 4 - 5 = -13 1 - 2 - 3 - 4 * 5 = -24 1 - 2 - 3 - 4 / 5 = -4.8 1 - 2 - 3 * 4 + 5 = -8 1 - 2 - 3 * 4 - 5 = -18 1 - 2 - 3 * 4 * 5 = -61 1 - 2 - 3 * 4 / 5 = -3.4 1 - 2 - 3 / 4 + 5 = 3.25 1 - 2 - 3 / 4 - 5 = -6.75 1 - 2 - 3 / 4 * 5 = -4.75 1 - 2 - 3 / 4 / 5 = -1.15 1 - 2 * 3 + 4 + 5 = 4 1 - 2 * 3 + 4 - 5 = -6 1 - 2 * 3 + 4 * 5 = 15 1 - 2 * 3 + 4 / 5 = -4.2 1 - 2 * 3 - 4 + 5 = -4 1 - 2 * 3 - 4 - 5 = -14 1 - 2 * 3 - 4 * 5 = -25 1 - 2 * 3 - 4 / 5 = -5.8 1 - 2 * 3 * 4 + 5 = -18 1 - 2 * 3 * 4 - 5 = -28 1 - 2 * 3 * 4 * 5 = -119 1 - 2 * 3 * 4 / 5 = -3.8 1 - 2 * 3 / 4 + 5 = 4.5 1 - 2 * 3 / 4 - 5 = -5.5 1 - 2 * 3 / 4 * 5 = -6.5 1 - 2 * 3 / 4 / 5 = 0.7 1 - 2 / 3 + 4 + 5 = 9.333333333333332 1 - 2 / 3 + 4 - 5 = -0.666666666666667 1 - 2 / 3 + 4 * 5 = 20.333333333333332 1 - 2 / 3 + 4 / 5 = 1.1333333333333333 1 - 2 / 3 - 4 + 5 = 1.3333333333333335 1 - 2 / 3 - 4 - 5 = -8.666666666666666 1 - 2 / 3 - 4 * 5 = -19.666666666666668 1 - 2 / 3 - 4 / 5 = -0.4666666666666667 1 - 2 / 3 * 4 + 5 = 3.3333333333333335 1 - 2 / 3 * 4 - 5 = -6.666666666666666 1 - 2 / 3 * 4 * 5 = -12.333333333333332 1 - 2 / 3 * 4 / 5 = 0.4666666666666667 1 - 2 / 3 / 4 + 5 = 5.833333333333333 1 - 2 / 3 / 4 - 5 = -4.166666666666667 1 - 2 / 3 / 4 * 5 = 0.16666666666666674 1 - 2 / 3 / 4 / 5 = 0.9666666666666667 1 * 2 + 3 + 4 + 5 = 14 1 * 2 + 3 + 4 - 5 = 4 1 * 2 + 3 + 4 * 5 = 25 1 * 2 + 3 + 4 / 5 = 5.8 1 * 2 + 3 - 4 + 5 = 6 1 * 2 + 3 - 4 - 5 = -4 1 * 2 + 3 - 4 * 5 = -15 1 * 2 + 3 - 4 / 5 = 4.2 1 * 2 + 3 * 4 + 5 = 19 1 * 2 + 3 * 4 - 5 = 9 1 * 2 + 3 * 4 * 5 = 62 1 * 2 + 3 * 4 / 5 = 4.4 1 * 2 + 3 / 4 + 5 = 7.75 1 * 2 + 3 / 4 - 5 = -2.25 1 * 2 + 3 / 4 * 5 = 5.75 1 * 2 + 3 / 4 / 5 = 2.15 1 * 2 - 3 + 4 + 5 = 8 1 * 2 - 3 + 4 - 5 = -2 1 * 2 - 3 + 4 * 5 = 19 1 * 2 - 3 + 4 / 5 = -0.19999999999999996 1 * 2 - 3 - 4 + 5 = 0 1 * 2 - 3 - 4 - 5 = -10 1 * 2 - 3 - 4 * 5 = -21 1 * 2 - 3 - 4 / 5 = -1.8 1 * 2 - 3 * 4 + 5 = -5 1 * 2 - 3 * 4 - 5 = -15 1 * 2 - 3 * 4 * 5 = -58 1 * 2 - 3 * 4 / 5 = -0.3999999999999999 1 * 2 - 3 / 4 + 5 = 6.25 1 * 2 - 3 / 4 - 5 = -3.75 1 * 2 - 3 / 4 * 5 = -1.75 1 * 2 - 3 / 4 / 5 = 1.85 1 * 2 * 3 + 4 + 5 = 15 1 * 2 * 3 + 4 - 5 = 5 1 * 2 * 3 + 4 * 5 = 26 1 * 2 * 3 + 4 / 5 = 6.8 1 * 2 * 3 - 4 + 5 = 7 1 * 2 * 3 - 4 - 5 = -3 1 * 2 * 3 - 4 * 5 = -14 1 * 2 * 3 - 4 / 5 = 5.2 1 * 2 * 3 * 4 + 5 = 29 1 * 2 * 3 * 4 - 5 = 19 1 * 2 * 3 * 4 * 5 = 120 1 * 2 * 3 * 4 / 5 = 4.8 1 * 2 * 3 / 4 + 5 = 6.5 1 * 2 * 3 / 4 - 5 = -3.5 1 * 2 * 3 / 4 * 5 = 7.5 1 * 2 * 3 / 4 / 5 = 0.3 1 * 2 / 3 + 4 + 5 = 9.666666666666668 1 * 2 / 3 + 4 - 5 = -0.33333333333333304 1 * 2 / 3 + 4 * 5 = 20.666666666666668 1 * 2 / 3 + 4 / 5 = 1.4666666666666668 1 * 2 / 3 - 4 + 5 = 1.6666666666666665 1 * 2 / 3 - 4 - 5 = -8.333333333333334 1 * 2 / 3 - 4 * 5 = -19.333333333333332 1 * 2 / 3 - 4 / 5 = -0.13333333333333341 1 * 2 / 3 * 4 + 5 = 7.666666666666666 1 * 2 / 3 * 4 - 5 = -2.3333333333333335 1 * 2 / 3 * 4 * 5 = 13.333333333333332 1 * 2 / 3 * 4 / 5 = 0.5333333333333333 1 * 2 / 3 / 4 + 5 = 5.166666666666667 1 * 2 / 3 / 4 - 5 = -4.833333333333333 1 * 2 / 3 / 4 * 5 = 0.8333333333333333 1 * 2 / 3 / 4 / 5 = 0.03333333333333333 1 / 2 + 3 + 4 + 5 = 12.5 1 / 2 + 3 + 4 - 5 = 2.5 1 / 2 + 3 + 4 * 5 = 23.5 1 / 2 + 3 + 4 / 5 = 4.3 1 / 2 + 3 - 4 + 5 = 4.5 1 / 2 + 3 - 4 - 5 = -5.5 1 / 2 + 3 - 4 * 5 = -16.5 1 / 2 + 3 - 4 / 5 = 2.7 1 / 2 + 3 * 4 + 5 = 17.5 1 / 2 + 3 * 4 - 5 = 7.5 1 / 2 + 3 * 4 * 5 = 60.5 1 / 2 + 3 * 4 / 5 = 2.9 1 / 2 + 3 / 4 + 5 = 6.25 1 / 2 + 3 / 4 - 5 = -3.75 1 / 2 + 3 / 4 * 5 = 4.25 1 / 2 + 3 / 4 / 5 = 0.65 1 / 2 - 3 + 4 + 5 = 6.5 1 / 2 - 3 + 4 - 5 = -3.5 1 / 2 - 3 + 4 * 5 = 17.5 1 / 2 - 3 + 4 / 5 = -1.7 1 / 2 - 3 - 4 + 5 = -1.5 1 / 2 - 3 - 4 - 5 = -11.5 1 / 2 - 3 - 4 * 5 = -22.5 1 / 2 - 3 - 4 / 5 = -3.3 1 / 2 - 3 * 4 + 5 = -6.5 1 / 2 - 3 * 4 - 5 = -16.5 1 / 2 - 3 * 4 * 5 = -59.5 1 / 2 - 3 * 4 / 5 = -1.9 1 / 2 - 3 / 4 + 5 = 4.75 1 / 2 - 3 / 4 - 5 = -5.25 1 / 2 - 3 / 4 * 5 = -3.25 1 / 2 - 3 / 4 / 5 = 0.35 1 / 2 * 3 + 4 + 5 = 10.5 1 / 2 * 3 + 4 - 5 = 0.5 1 / 2 * 3 + 4 * 5 = 21.5 1 / 2 * 3 + 4 / 5 = 2.3 1 / 2 * 3 - 4 + 5 = 2.5 1 / 2 * 3 - 4 - 5 = -7.5 1 / 2 * 3 - 4 * 5 = -18.5 1 / 2 * 3 - 4 / 5 = 0.7 1 / 2 * 3 * 4 + 5 = 11.0 1 / 2 * 3 * 4 - 5 = 1.0 1 / 2 * 3 * 4 * 5 = 30.0 1 / 2 * 3 * 4 / 5 = 1.2 1 / 2 * 3 / 4 + 5 = 5.375 1 / 2 * 3 / 4 - 5 = -4.625 1 / 2 * 3 / 4 * 5 = 1.875 1 / 2 * 3 / 4 / 5 = 0.075 1 / 2 / 3 + 4 + 5 = 9.166666666666668 1 / 2 / 3 + 4 - 5 = -0.833333333333333 1 / 2 / 3 + 4 * 5 = 20.166666666666668 1 / 2 / 3 + 4 / 5 = 0.9666666666666667 1 / 2 / 3 - 4 + 5 = 1.1666666666666665 1 / 2 / 3 - 4 - 5 = -8.833333333333334 1 / 2 / 3 - 4 * 5 = -19.833333333333332 1 / 2 / 3 - 4 / 5 = -0.6333333333333334 1 / 2 / 3 * 4 + 5 = 5.666666666666667 1 / 2 / 3 * 4 - 5 = -4.333333333333333 1 / 2 / 3 * 4 * 5 = 3.333333333333333 1 / 2 / 3 * 4 / 5 = 0.13333333333333333 1 / 2 / 3 / 4 + 5 = 5.041666666666667 1 / 2 / 3 / 4 - 5 = -4.958333333333333 1 / 2 / 3 / 4 * 5 = 0.20833333333333331 1 / 2 / 3 / 4 / 5 = 0.008333333333333333 >>>
Офлайн