#python #python-3.x
#питон #python-3.x
Вопрос:
ребята. Сейчас я работаю над алгоритмом python для построения некоторых неравенств. Я хотел бы переместить переменные, начинающиеся с «x», влево, переместить все константы вправо и суммировать их.
constraint_1 = str(boundNode[j]) " " str(boundNode[j-(2*(i 1))]) " <= " str(boundNode[(j-(2*(i 1)) i)]) " " str(boundNode[(j-(2*(i 1)) i) 1])
test = constraint_1.split(" <= ")
part_left = list(test[0].partition(" "))
part_right = list(test[1].partition(" "))
print(part_left, part_right)
Это то, что я закодировал.
['x1', ' ', '0'] ['4', ' ', '6']
['x2', ' ', '4'] ['7', ' ', 'x1']
['x3', ' ', '6'] ['x1', ' ', '12']
['x4', ' ', '7'] ['9', ' ', 'x2']
['x5', ' ', 'x1'] ['x2', ' ', 'x3']
['x6', ' ', '12'] ['x3', ' ', '16']
['x7', ' ', '9'] ['11', ' ', 'x4']
['x8', ' ', 'x2'] ['x4', ' ', 'x5']
['x9', ' ', 'x3'] ['x5', ' ', 'x6']
['x10', ' ', '16'] ['x6', ' ', '19']
['x11', ' ', '11'] ['13', ' ', 'x7']
['x12', ' ', 'x4'] ['x7', ' ', 'x8']
['x13', ' ', 'x5'] ['x8', ' ', 'x9']
['x14', ' ', 'x6'] ['x9', ' ', 'x10']
['x15', ' ', '19'] ['x10', ' ', '22']
['20', ' ', '13'] ['14', ' ', 'x11']
['23', ' ', 'x7'] ['x11', ' ', 'x12']
['25', ' ', 'x8'] ['x12', ' ', 'x13']
['26', ' ', 'x9'] ['x13', ' ', 'x14']
['27', ' ', 'x10'] ['x14', ' ', 'x15']
['28', ' ', '22'] ['x15', ' ', '25']
Это то, что я получил в терминале.
Например, идеальный вывод 2-й строки будет -x1 x2 <= 3
Чего я с нетерпением жду здесь, так это подхода к поиску всего индекса элементов, содержащегося "x"
в операторе цикла или условия.
Комментарии:
1. это не очень хорошая идея. Чего вы в конечном итоге пытаетесь достичь?
2. если вы пытаетесь анализировать / решать алгебраические системы, взгляните на
sympy
. Если вы хотите оценить неравенства, используйте функцию. Если вы сообщите нам, какова ваша цель, мы обязательно поможем3. @anon01 Да, я не думаю, что это может сработать. Я пытаюсь сгенерировать неравенства, подобные
-x1 x2 <= 3
тому, которое равно второй строке вывода в терминале, приведенном выше. Кстати. В каждой строке есть ` <=`.4. Как правило, предполагается, что код должен делать вещи простыми и краткими. Если вам нужно «жестко закодировать» много строк для одного бита логики, вероятно, есть более простой способ сделать это.
Ответ №1:
Это не дает ответа на поставленный вопрос, как указано, но, вероятно, более полезно и слишком длинно для публикации в комментарии. Попробуйте это вместо этого:
def my_ineq(x1, x2):
if -x1 x2 <= 3:
return True
else:
return False
my_ineq(2,4) # True
my_ineq(0,5) # False