2012-08-07 18 views
16

हाय के साथ बयान, मैं एक अगर बयान में मैं क्या हासिल करने की कोशिश कर रहा हूँ का एक उदाहरण एक चर गणितीय ऑपरेटर सम्मिलित करने के लिए, कोशिश कर रहा हूँ: -अजगर यदि चर गणितीय ऑपरेटर

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 के साथ। मैंने निष्पादन और eval का उपयोग करने की कोशिश की है, लेकिन न तो अगर एक कथन में काम करते हैं, तो मुझे इसके आसपास क्या विकल्प मिलेंगे? उनके समान पाठ के अनुसार ऑपरेटरों को देखने के लिए एक शब्दकोश के साथ एक साथ

import operator 
op = operator.eq 

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

उत्तर

18

ऑपरेटर पैकेज का उपयोग करें:

+1

सही !, धन्यवाद नाथन वास्तव में एक अच्छा उदाहरण भी है – Paul

16

operator मॉड्यूल का उपयोग करें। इन सभी को लगातार काम करने के लिए यूनरी या बाइनरी ऑपरेटर होना चाहिए।

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

आपका जवाब मार्क के लिए धन्यवाद, ऑपरेटर मॉड्यूल डीईएफ़ तरह से प्राप्त करने के लिए है इसके चारों ओर – Paul

1

मैं अगर बयान

एक में कार्यकारी और eval लेकिन न तो काम का उपयोग कर की कोशिश की है पूर्णता के लिए के लिए यह उल्लेख किया जाना चाहिए कि वे काम करते हैं, भले ही तैनात उत्तर प्रदान एक बेहतर समाधान। आप eval करने के लिए() पूरे तुलना करनी होगी, न सिर्फ ऑपरेटर:

maths_operator = "==" 

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

या लाइन exec:

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