# 3.2. Expressions¶

The *right hand* side of the assignment statement doesn’t have to be a value. It can be *an arithmetic expression*, like `2*2`

. The expression will be evaluated and the result from the expression will be stored in the variable.

## 3.2.1. Integer Division¶

You can use all the standard mathematical symbols.

Note

This book is using Python 3.0 which returns a decimal value from an integer calculation like `1 / 3`

. If we had executed `1 / 3`

in an older Python development environment it would have printed `0`

instead. In many languages if you are only using integers in calculations (whole numbers - like -3,65, -39028, 602939) the result will also be an integer and the factional part (part after the decimal point) is thrown away. In those environments it is important to use decimal values (like `1.0 / 2`

, `1 / 2.0`

, or `1.0 / 2.0`

) if you want a decimal result.

## 3.2.2. Modulo¶

There are also some symbols that may be used in ways that you don’t expect.

You may not be familiar with the **modulo** (remainder) operator `%`

. It returns the remainder when you divide the first number by the second. You probably did this long ago when you were learning long division. In the case of `4 % 2`

, `2`

goes into `4`

two times with a remainder of `0`

. The result of `5 % 2`

would be `1`

since `2`

goes into `5`

, two times with a remainder of `1`

. In fact you can check if the result of `X % 2`

is equal to `1`

to see if `X`

is odd and if the result of `X % 2`

is equal to `0`

then `X`

is even.

Note

The result of `x % y`

when `x`

is smaller than `y`

is always `x`

. The value `y`

can’t go into `x`

at all, since `x`

is smaller than `y`

, so the result is just `x`

. So if you see `2 % 3`

the result is `2`

. Edit the code above to try this for yourself. Change the code to `result = 2 % 3`

and see what that prints when it is run.