Why are some floating point values not represented exactly in Python?

The short answer: Because computers operate in base 2 (binary) while natural floating point numbers are in base 10 (decimal), most floating point numbers cannot be represented exactly in the computer. This is not a problem with Python but with all binary computers.

The section
"Floating
Point Arithmetic: Issues and Limitations" in the Python Tutorial
provides a really clear description of why this is the case.
In *The Perils of
Floating Point* Bruce Bush provides ways on
working around this inherent limitation.

There are packages in Python that provide ready-made ways
of getting around this problem.
For example, the `Numeric.allclose`

method
performs a safe-comparison between two `Numeric`

arrays.
If you want to write your own safe-comparisons, however,
there isn't a ready-made way of finding out floating-point
precision in Python (Martelli 2003, p. 34).