Boolean Operator Confusion

Terry Reedy tjreedy at udel.edu
Fri Apr 24 20:51:04 EDT 2015


On 4/24/2015 10:50 AM, subhabrata.banerji at gmail.com wrote:
> Dear Group,
>
> I am trying to understand the use of Boolean operator in Python. I am trying to
> write small piece of script, as follows,
>
> def input_test():
> 	str1=raw_input("PRINT QUERY:")
> 	if "AND" or "OR" or "NOT" in str1:
> 		print "It is a Boolean Query"
> 	elif "AND" or "OR" or "NOT" not in str1:
> 		print "It is not a Boolean Query"
> 	else:
> 		print "None"

 > I am trying to achieve if the words "AND","OR","NOT" ... in string I 
want to recognize it as,
 > Boolean Query, if they are not there the string is not Boolean query.
 > As I am trying to test it I am getting following output,
 >
 >>>> input_test()
 > PRINT QUERY:obama AND clinton
 > It is a Boolean Query

 >>>> input_test()
 > PRINT QUERY:obama clinton
 > It is a Boolean Query
---

Functions that do real calculation should be written as functions that 
take an input object (or objects) and produce an output object.  You can 
then write automated tests can be run repeatedly.

Retyping the function name (multiple times) and test strings every time 
you modify and retest the function is tedious and *subject to error*. 
It is easy to write simple test functions.  Example implementing both ideas:


def is_bool_text(text):
     if "AND" or "OR" or "NOT" in text:
         return True
     elif "AND" or "OR" or "NOT" not in text:
         return False

def test_is_bool_text():
     for inp, expect in (('obama AND clinton', True),
                         ('obama clinton', False),
                        ):
         print(inp, 'PASS' if is_bool_text(inp) == expect else 'FAIL')

test_is_bool_text()

Currently, the second example is FAIL.  You can now modify the function 
and re-run the test until both examples PASS.  Then add more test cases.

Based on my experience reading newbie posts on python list and 
Stackoverflow, learning to write real functions, without input and 
print, and repeatable tests, is the most important thing many people are 
not learning from programming books and classes.

-- 
Terry Jan Reedy




More information about the Python-list mailing list