Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 2, 2018 17:47:34

wadifi
Зарегистрирован: 2018-09-02
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

перебор арифметических операций

Добрый день
Подскажите пожалуйста как лучше реализовать
перебор арифметических операций в сложных математических формулах, где много арифметических действий.

например выражение 1 x 2 x 3 x 4 x 5 необходимо x менять на различные операции, перебирая все возможные варианты.

Офлайн

#2 Сен. 2, 2018 23:19:20

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

перебор арифметических операций

 >>> from operator import mul
>>> from operator import add
>>> def calc(operator):
...     return reduce(operator, [1,2,3,4])
... 
>>> calc(add)  # Сожение
10
>>> calc(mul)  # Умножение
24



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Сен. 3, 2018 01:34:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

перебор арифметических операций

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
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version