one - Python if-statement con operador matemático variable
python range (3)
He intentado usar exec y eval, pero ninguno funciona en una sentencia if
En aras de la exhaustividad, debe mencionarse que funcionan, incluso si las respuestas publicadas proporcionan una mejor solución. Deberá evaluar () toda la comparación, no solo el operador:
maths_operator = "=="
if eval(''"test"'' + maths_operator ''"test"''):
print "match found"
o ejecute la línea:
exec ''if "test"'' + maths_operator + ''"test": print "match found"''
Estoy tratando de insertar un operador matemático variable en una sentencia if, un ejemplo de lo que estoy tratando de lograr al analizar las expresiones matemáticas proporcionadas por el usuario:
maths_operator = "=="
if "test" maths_operator "test":
print "match found"
maths_operator = "!="
if "test" maths_operator "test":
print "match found"
else:
print "match not found"
obviamente lo anterior falla con SyntaxError: invalid syntax
. He intentado usar exec y eval, pero ninguno funciona en una declaración if, ¿qué opciones tengo para solucionar esto?
Utilice el módulo operator
:
import operator
op = operator.eq
if op("test", "test"):
print "match found"
Utilice el paquete del operador junto con un diccionario para buscar los operadores de acuerdo con sus equivalentes de texto. Todos estos deben ser operadores unarios o binarios para que funcionen de manera consistente.
import operator
ops = {''=='' : operator.eq,
''!='' : operator.ne,
''<='' : operator.le,
''>='' : operator.ge,
''>'' : operator.gt,
''<'' : operator.lt}
maths_operator = "=="
if ops[maths_operator]("test", "test"):
print "match found"
maths_operator = "!="
if ops[maths_operator]("test", "test"):
print "match found"
else:
print "match not found"