2012-08-07 58 views
16

嗨聲明,我試圖插入一個變量的數學運算符成if語句中,我想要實現的例子: -蟒如果有變量的數學運算符

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" 

顯然上述失敗與SyntaxError: invalid syntax。我已經嘗試過使用exec和eval,但都沒有在if語句中工作,我有什麼辦法可以解決這個問題?

回答

18

使用操作者包連同字典根據它們的文本等同物來查找操作員。所有這些都必須是一元或二元運算符才能始終如一地工作。

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" 
+1

完美!感謝Nathan一個非常好的例子 – Paul 2012-08-07 14:05:14

16

使用operator模塊:

import operator 
op = operator.eq 

if op("test", "test"): 
    print "match found" 
+1

謝謝您的回答馬克,操作模塊DEF是獲取方式在這附近。 – Paul 2012-08-07 14:06:00

1

我使用exec和EVAL但既不工作試圖在if語句

爲了完整起見,應當提及的是他們做的工作,即使貼提供的答案更好的解決方案。你必須給eval()比較全,不只是運營商:

maths_operator = "==" 

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

或者exec行:

exec 'if "test"' + maths_operator + '"test": print "match found"'