diff --git a/pymath/expression.py b/pymath/expression.py index b54437e..ed4043f 100644 --- a/pymath/expression.py +++ b/pymath/expression.py @@ -89,8 +89,8 @@ class Expression(Explicable): if type(exp) == str: expression.postfix_tokens = str2tokens(exp) elif type(exp) == list: - # Bug ici quand i ne peut pas être converti en string - exp_mod_op = [op.get_op(i) if (str(i) in "+-*/^" and not isOperator(i)) else i for i in exp] + # Ici on ne peut convertir les "+" en opérateur que s'ils sont d'arité 2. + exp_mod_op = [op.get_op(i) if op.can_be_operator(i) else i for i in exp] expression.postfix_tokens = flatten_list([tok.postfix_tokens if Expression.isExpression(tok) else tok for tok in exp_mod_op]) elif type(exp) == Expression: return exp diff --git a/pymath/operator.py b/pymath/operator.py index b643cad..18a142b 100644 --- a/pymath/operator.py +++ b/pymath/operator.py @@ -268,7 +268,10 @@ class op(object): @classmethod def can_be_operator(cls, symbole): """ Tell if the symbole can be an operator """ - return symbole in [i[0] for i in cls._operators] + if type(symbole) == str: + return symbole in [i[0] for i in cls._operators] + else: + return False @ClassProperty