Python if-statement with variable mathematical operator

后端 未结 3 1985
南旧
南旧 2020-12-18 20:47

I\'m trying to insert a variable mathematical operator into a if statement, an example of what I\'m trying to achieve in parsing user-supplied mathematical expressions:

相关标签:
3条回答
  • 2020-12-18 21:07

    I've tried using exec and eval but neither work in an if statement

    For the sake of completeness it should be mentioned that they do work, even if the posted answers provide a better solution. You'll have to eval() the whole comparison, not just the operator:

    maths_operator = "=="
    
    if eval('"test"' + maths_operator '"test"'):
           print "match found"
    

    or exec the line:

    exec 'if "test"' + maths_operator + '"test": print "match found"'
    
    0 讨论(0)
  • 2020-12-18 21:08

    Use the operator package together with a dictionary to look up the operators according to their text equivalents. All of these must be either unary or binary operators to work consistently.

    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"
    
    0 讨论(0)
  • 2020-12-18 21:23

    Use the operator module:

    import operator
    op = operator.eq
    
    if op("test", "test"):
       print "match found"
    
    0 讨论(0)
提交回复
热议问题