Как сделать "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
Честно говоря, в прошлом я делал сравнения строк, когда это казалось более удобным (хотя вы должны помнить, что >
не спотыкается раньше >=
.)