# MicroPython ‘boolean’ Data Type

## Contents

## Introduction

MicroPython is a “slim” version of Python specifically designed with a small footprint to efficiently run on memory constrained microcontrollers.

Computer languages have a built-in set of data types along with user capability to define custom types. MicroPython is no exception. Following are the standard or built-in data types of Python:

- Numeric
- Boolean
- Sequence Type
- Set
- Dictionary

## Boolean Definition and Properties

The boolean data type can hold only one of two value: **True** or **False**.

Computer programs often need to evaluate an expression to determine if it is true or false. The result is used as a decision point to repeat an action or branch elsewhere in the code, etc. A comparison operation on two values will always return either True or False.

**Example 1**

```
# A series of statements that return a boolean value
'A' < 'B' ⇒ True
5 == 5.0 ⇒ True
(14/2) > (2+6) ⇒ False
# MicroPython dictionaries are not ordered.
dict1 = {'Color': 'red', 'Doors': 4}
dict2 = {'Doors' : 4, 'Color' : 'red'}
dict1 == dict2 ⇒ True
# MicroPython lists are ordered.
list1 = [0, 1, 2]
list2 = [2, 1, 0]
list1 == list2 ⇒ False
```

## Function bool()

The function bool() performs a boolean evaluation on a value or variable and returns either True or False.

**bool(value) = True**

Most values when passed to bool() return True. The following examples all return True:

bool(5) ⇒ True bool({'Color' : 'red', 'Doors' : 4}) ⇒ True bool('Spam') ⇒ True bool(True + False) ⇒ True

The last example is an interesting one. MicroPython will evaluate (True + False) as (`1 + 0`) i.e. bool(1) so returns True.

**bool(value) = False**

The following values passed to bool() all evaluate to False:

- The value zero 0
- The value False
- Empty strings ""
- Any list, tuple, set, and dictionary that is empty () [] {}

The following are all False:

bool(0) ⇒ False bool(None) ⇒ False bool('') ⇒ False bool({}) ⇒ False

## User Defined Boolean Functions

Functions can also return a boolean value. This can assist to make code more readable.

#### Example 2

```
# Demonstrates the use of a user defined function
# that has a boolean return type generated with the
# builtin function bool().
# User defined function returns True
# if 'num' is an even number.
def is_even(num):
# By definition bool(0) returns False
return not(bool(num % 2))
# Define a list
list1 = [-5, 24, 'Spam', 0]
# Iterate through all elements in the list.
# Firstly check that each item is numerical.
# Then if it is a number determine whether
# it is even or odd.
for item in list1:
if (type(item) == int or type(item) == float):
if (is_even(item)):
print(item, 'is an even number')
else:
print(item, 'is an odd number')
else:
print(item, 'is not numeric')
print('\nProgram ending...')
```

-5 is an odd number 24 is an even number Spam is not numeric 0 is an even number Program ending...

The function `is_even()` accepts a single number as its parameter. The number is divided by 2 and if the remainder is zero (0) then True is returned else False. This relies on `bool(0)` returning False, i.e no remainder, returning a False value which is converted to True by the not operator.