Форум сайта python.su
0
Привет!
Есть 3 числа: 1, 2 ,3.
Нужно перебрать между ними знаки арифметических действий (+,-,*,/), все возможные комбинации.
Догадываюсь что нужно воспользоваться циклом ‘for’, но как согласовать типы данных у чисел и знаков и при этом получить результат вычислений(print)? И как грамотно организовать перебор, чтобы не было повторений, но и не упустить какой либо вариант.
Офлайн
186
Если без учёта коммутативности и приоритета операций, то как то так:
>>> from operator import add, div, mul, sub >>> s = [1,2,3] >>> s = [ (x, y, z) for x in s for y in s for z in s ] >>> o = [add, div, mul, sub] >>> o = [ (x, y) for x in o for y in o ] >>> [ [ x(y(a,b),c) for (x, y) in o ] for (a,b,c) in s ] [[3, 2, 2, 1, 2, 1, 1, 0, 2, 1, 1, 0, 1, 0, 0, -1], [4, 3, 3, 2, 1, 0, 0, 0, 4, 2, 2, 0, 0, -1, -1, -2], [5, 4, 4, 3, 0, 0, 0, 0, 6, 3, 3, 0, -1, -2, -2, -3], [4, 1, 3, 0, 3, 0, 2, -1, 3, 0, 2, -1, 2, -1, 1, -2], [5, 2, 4, 1, 1, 0, 1, -1, 6, 0, 4, -2, 1, -2, 0, -3], [6, 3, 5, 2, 1, 0, 0, -1, 9, 0, 6, -3, 0, -3, -1, -4], [5, 1, 4, -1, 4, 0, 3, -2, 4, 0, 3, -2, 3, -1, 2, -3], [6, 2, 5, 0, 2, 0, 1, -1, 8, 0, 6, -4, 2, -2, 1, -4], [7, 3, 6, 1, 1, 0, 1, -1, 12, 0, 9, -6, 1, -3, 0, -5], [4, 3, 3, 2, 3, 2, 2, 1, 3, 2, 2, 1, 2, 1, 1, 0], [5, 4, 4, 3, 1, 1, 1, 0, 6, 4, 4, 2, 1, 0, 0, -1], [6, 5, 5, 4, 1, 0, 0, 0, 9, 6, 6, 3, 0, -1, -1, -2], [5, 2, 5, 1, 4, 1, 4, 0, 4, 1, 4, 0, 3, 0, 3, -1], [6, 3, 6, 2, 2, 0, 2, 0, 8, 2, 8, 0, 2, -1, 2, -2], [7, 4, 7, 3, 1, 0, 1, 0, 12, 3, 12, 0, 1, -2, 1, -3], [6, 1, 7, 0, 5, 0, 6, -1, 5, 0, 6, -1, 4, -1, 5, -2], [7, 2, 8, 1, 2, 0, 3, -1, 10, 0, 12, -2, 3, -2, 4, -3], [8, 3, 9, 2, 1, 0, 2, -1, 15, 0, 18, -3, 2, -3, 3, -4], [5, 4, 4, 3, 4, 3, 3, 2, 4, 3, 3, 2, 3, 2, 2, 1], [6, 5, 5, 4, 2, 1, 1, 1, 8, 6, 6, 4, 2, 1, 1, 0], [7, 6, 6, 5, 1, 1, 1, 0, 12, 9, 9, 6, 1, 0, 0, -1], [6, 2, 7, 2, 5, 1, 6, 1, 5, 1 , 6, 1, 4, 0, 5, 0], [7, 3, 8, 3, 2, 0, 3, 0, 10, 2, 12, 2, 3, -1, 4, -1], [8, 4, 9, 4, 1, 0, 2, 0, 15, 3, 18, 3, 2, -2, 3, -2], [7, 2, 10, 1, 6, 1, 9, 0, 6, 1, 9, 0, 5, 0, 8, -1], [8, 3, 11, 2, 3, 0, 4, 0, 1 2, 2, 18, 0, 4, -1, 7, -2], [9, 4, 12, 3, 2, 0, 3, 0, 18, 3, 27, 0, 3, -2, 6, -3]]
Отредактировано Rodegast (Янв. 25, 2019 11:00:09)
Офлайн