Как сделать "case" или "if, then" в зависимости от оператора сравнения, используемого в Sage

У меня есть функция, которая возвращает неравенства, например,

s= solve(x^(2)<4,x) 
s
[[x>-2, 2<x]]

Я хотел бы иметь возможность преобразовать это в строку "]-2,2[" для экспорта в LaTeX.

Как бы я мог проверить, какой оператор сравнения используется, а затем создать сценарий для нескольких случаев на основе этого? Например

 if s[1].operatorused== "<" 
  then do stuff
 if s[1].operatorused== "<=" 
  then do stuff

и так далее.

1 ответ

Решение

Вы можете получить доступ к оператору через .operator() и сделайте ваши сравнения таким образом:

sage: s[0][0].operator()
<function operator.gt>
sage: s[0][1].operator()
<function operator.lt>
sage: s[0][0].operator() == operator.gt
True
sage: s[0][0].operator() == operator.lt
False

Честно говоря, в прошлом я делал сравнения строк, когда это казалось более удобным (хотя вы должны помнить, что > не спотыкается раньше >=.)

Другие вопросы по тегам