# Introduction to Booleans#

## Booleans#

As we stated in 1.1 Basics of Numbers and Variables, programs do their work with data. Here we will be introducing a new type of data: Booleans. Booleans are a type of data that is essentially yes/no (whether a box is checked). A boolean is either `True` or `False`, there are only two possible values. They’re named after George Boole.

At a Python prompt (after the `>>>` in IDLE or at a terminal after running `python`), try typing a boolean and pressing enter. Here’s what you should expect to see:

```>>> True
True
>>> False
False
```

# Boolean Expressions#

Boolean expressions are expressions that evaluate to a boolean value, either `True` or `False`. There are many operators that allow us to evaluate boolean expressions, in two broad categories: comparisons and logical operators.

## Comparisons 1: Inequalities#

The first relational operators we’ll meet are the inequalities, written `<` (for less than), `<=` (for less-than-or-equal-to, i.e., ≤), `>` (for greater than) and `>=` (for greater-than-or-equal-to, i.e., ≥). These are all written in the conventional way and with the conventional numerical meaning. They return `True` when the inequality holds and `False` when it doesn’t.

```>>> 8 > 7
True
>>> 7 > 8
False
>>> 8 >= 8
True
>>> 10 <= 17
True
```

## Comparisons 2: Equalities#

To test for equality, we use `==`. We’ve already encountered the `=` sign elsewhere: it’s used for variable assignment. Confusing the two is an extremely common mistake, even for experienced programmers.

```>>> 10 == 10
True
>>> 10 == 9
False
>>> x = 10   # THIS IS AN ASSIGNMENT, NOT A COMPARISON!!!!
>>> x == 9
False
>>> x == 10
True
```

`True` if the values are equal, `False` otherwise

```>>> 10 == 10
True
>>> 10 == 9
False
>>> x = 10
>>> x == 9
False
>>> x == 10
True
```

## Comparisons 3: Anti-Equalities#

The `!=` operator means “not equal to”, i.e., the ≠ operator from mathematics. It returns

The `!=` operator means “not equal to”, i.e., the ≠ operator from mathematics. It returns `True` if the values are not equal, and `False` otherwise.

```>>> 10 != 10
False
>>> 10 != 9
True
```

## Logical Operators#

There are three common logical operators in programming: `and` a/k/a conjunction, `or` a/k/a disjunction, and `not` a/k/a negation.

The `and` operator returns `True` if both of its arguments are `True`.

```>>> True and True
True
>>> False and True
False
>>> True and False
False
>>> False and False
False
```

The `or` operator returns `True` if either or both expressions evaluate to `True`, and returns `False` otherwise.

```>>> True or True
True
>>> True or False
True
>>> False or True
True
>>> False or False
False
```

Finally, the `not` operator invers its Boolean argument.

```>>> not True
False
>>> not False
True
```