# Math 300: Python Data Types (back to Math 300 notes)

One of the things that can make Python a little tricky is the different interpretations it can put on a value. Python uses a few simple data types, and any time a value is entered, python must decide how that value is to be interpreted. Python can support very sophisticated user-constructed data types, but we will only concern ourselves here with the basic predefined ways that input can be interpreted.

## Floating Point Numbers

The most important data type for mathematicians is the floating point number. By default, python interprets any number that includes a decimal point as a double precision floating point number. We will not discuss the true binary representation of these numbers. In order to make good use of python, we need only to observe that floating point representatations are effectively writing numbers in scientific notation: $a×{10}^{b}$. The number $a$ is called the mantissa of the number, while $b$ is the exponent. In a double precision representation, the number $a$ may be thought of as a sixteen-digit number between -1 and 1. This is not exactly right, but it is a decent rule of thumb. The number $b$ is an integer between -1022 and 1023, inclusive.

>>> a = 3 >>> a/4 0 >>> float(a)/4 0.75

## Integers

When you type a=3 at the prompt, python interprets the number 3 as an integer. This is probably what you want, but it might lead to arithmetic results that surprise you. Consider the following python commands.

>>> a = 3 >>> a/4 0 >>> float(a)/4 0.75

When python does arithmetic with integers, it always truncates the result to an integer. Thus in python, 3/4=0. If we want to get decimal answers, at least one number in the computation must be in a floating point representation.

We can convert integers to floating point numbers in python using the float and double functions. These are almost the same - two names are provided because in some programming languages there are differences between float and double types. There are no such differences in python, but note that float is built in to python, while double comes from numpy, and hence is slightly different. Interestingly, it turns out that the double function is somewhat slower than float.

>>> from numpy import * >>> a=3 >>> 1/a 0 >>> 1/float(a) 0.3333333333333333 >>> 1/double(a) 0.33333333333333331

By the same token, we can truncate floating point numbers to integers in python using the int command.

>>> pi 3.141592653589793 >>> int(pi) 3

## Strings

Strings (in any programming language) are just plain ol' text. Computers like to deal in numbers, so when we want to type plain ol' text, we must enclose it in quotation marks. We can use any ol' kind of quotation marks we want, whether single or double, just so long as we match them properly.

>>> hi="Hello, world!" >>> bye='Goodbye, cruel world!' >>> wut="What is this 'world' you speak of?" >>> hi 'Hello, world!' >>> bye 'Goodbye, cruel world!' >>> wut "What is this 'world' you speak of?"

Evidently we can enclose one quote inside another, so long as we manage the types of quotation marks used. There is one other type of quotation mark, created by typing three single-quotes together. This lets us type multiple line strings. The \n you see is a representation for a newline character - the invisible character a computer uses to move to the next line.

>>> longstring='''This is a preposterously long string, ... which we use to illustrate that we can be quite verbose ... in python if we want to.''' >>> longstring 'This is a preposterously long string,\nwhich we use to illustrate that we can be quite verbose\nin python if we want to.'