Python programs perform many numeric operations. With operators and operands (the values operated upon), programs evaluate expressions.
We can modify numbers and additionally modify how those numbers are represented. We use built-ins like int
and float
.
We have two division operators. With one slash, we divide two numbers. And with two slashes "//" we divide and round down the result.
a = 100 b = 7 # Divide 100 by 7. print(a / b) # Discard fractional part of result. print(a // b)14.285714285714286 14
This converts data to floating-point numbers. It acts on strings or integers. On strings, it handles signs (positive or negative) and infinity values ("inf").
int
or str
. Python simplifies common conversions.# Float converts a string into a float number. value = "3.14" number = float(value) print(number) print(number == 3.14) print(value == "3.14") print() # Float also converts an integer into a float number. integer = 100 floating = float(integer) print(floating) print(integer)3.14 True True 100.0 100
Int
Like float
, int()
converts from strings and other number types. It returns an integer (a number with nothing past the decimal—no fractional part).
Int
will cause an error if we try to convert a floating-point number within a string
(like "123.4").# Convert a string to int. input = "123" result = int(input) print(result) # Use int to convert from floating to integral. input = 456.9 result = int(input) print(result)123 456
Hex converts an integer into a hexadecimal number. This form of number can be useful in interoperating with other programs and systems. We see the hex representations of 10 and 100.
# Convert this value to a hex. value = 10 result = hex(value) print(result) # Convert another value. value = 100 result = hex(value) print(result)0xa 0x64
Octal numbers use not a base 10 like we are used to, but a base 8. So they only contain the digits 0 through 7. With oct()
we convert a base 10 number into its octal representation.
# Convert 74 into octal which is 112. number = 74 octal = oct(number) print(octal)0o112
In computers, numbers are presented with bits, as binary. With the bin()
built-in, we get a string
representation of an integer. Zeros on the left of the representation are discarded.
number = 100 # Convert this number to a binary string. result = bin(number) print(result)0b1100100bin(-1) -0b1 bin(0) 0b0
Complexity is not just in our computer programs. We also encounter complex numbers. These numbers have two components—real and imaginary.
complex()
built-in function. These numbers can be added, subtracted, and manipulated in other ways.# Create two complex numbers. complexA = complex(3, 10) complexB = complex(5, 15) # Add the two together. # ... The result is also complex. complexC = complexA + complexB print(complexC)(8+25j)
Division is a slow operation on processors. In Python we have both the "/" and "//" operators. Is there some optimization in the latter one? My benchmark tests this.
double
-slash operator to perform division and get an integer-only result.import time a = 1000 b = 223 c = 0 print (time.time()) # Version 1: normal division i = 0 while i < 10000000: c = a / b i += 1 print (time.time()) # Version 2: integer result division i = 0 while i < 10000000: c = a // b i += 1 print (time.time())1345843075.764 1345843077.922 (/ = 2.158 s) 1345843080.448 (// = 2.526 s)
The divmod
function is built into the Python language. It computes two kinds of division at once: it does an integral division and a modulo division. It returns a tuple.
Random
numbers can be generated in Python with the randint method. But for a random selection in a list or other collection, random.choice
is an ideal option.
Pow
The pow built-in, or two asterisks, means exponentiation. We can raise a number to a certain power with clear syntax. The two syntax forms are equivalent.
Bool converts an expression into True or False. It is similar to the if
-statement, which also evaluates expressions. Bool is a value—often languages store False as 0 and True as 1.
We implement a prime-testing method with a def and a for
-loop. Some arithmetic optimizations are applied to this method—we test the number's square.
Numeric operations are everywhere. All memory accesses in programs use numeric computations. In Python, using numbers effectively is important.