Complex Conditionals (and, or, and not)

We can also use and and or to join several logical expressions together as shown in the table below. An or joining two expressions means that if either of the expressions is true, the whole expression is true. An and used to join two expressions is only true if both expressions are true. A not negates the logical value that follows it. If it was true, then a not changes the result to false. If it was false, the not changes the result to true.

Expression Meaning
(a < b) or (c < d) The whole expression is true if a is less than b or c is less than d.
(a < b) and (c < d) The whole expression is true if a is less than b AND ALSO c is less than d.
not a < b Only true if a is actually greater than or equal to b. The logical expression not a < b is the same as a >= b.

A common use of and is to check that a value is in a range between a minimum value and a maximum value. For example, if you have asked a person to pick a number between 1 and 10 you can check for this using the following.

    csp-12-5-1: Given the code below, what describes the values of x that will cause the code to print “condition true”?

    1
    2
    3
    if x > 0 and x < 10:
        print ("condition true")
    print ("All done")
    
  • 1 to 10
  • This would be true if the second expression was x <= 10.
  • 0 to 9
  • This would be true if the first logical expression was x >= 0.
  • 1 to 9
  • The "condition true" will only be printed when x is greater than 0 and less than 10 so this is the range from 1 to 9.

A common use of or is to check if either one of two conditions are true. For example, a parent has told a teen that she can go out if she has cleaned her room or finished her homework. If either of these is true she can go out. In Python a value of 0 means false and any non-zero value is true, but 1 is often used for true.

    csp-12-5-2: Given the code below, what describes the values of x that will cause the code to print “condition true”?

    1
    2
    3
    if x > 0 or x < 10:
        print ("condition true")
    print ("All done")
    
  • all values of x
  • This will be true if x is greater than 0 or less than 10. This covers all possible values of x.
  • 1 to 9
  • This would be true if the logical expressions were joined with and instead of or.
  • 0 to 9
  • This would be true if the logical expressions were jointed with and instead of or and if the first logical expression was x >= 0.
Next Section - Practice with if