Home
Map
Number ExamplesUse numbers and numeric operators. See the add, multiply, subtract and divide constructs.
Python
This page was last reviewed on Apr 16, 2023.
Numbers. Python programs perform many numeric operations. With operators and operands (the values operated upon), programs evaluate expressions.
Converting numbers. We can modify numbers and additionally modify how those numbers are represented. We use built-ins like int and float.
int
Division. We have two division operators. With one slash, we divide two numbers. And with two slashes "//" we divide and round down the result.
Note The "/" operator leaves the fractional part of the result intact. It does not matter if the two operands are fractional or not.
Note 2 The "//" operator divides in the same way. But it also rounds the result down to the nearest integer.
a = 100 b = 7 # Divide 100 by 7. print(a / b) # Discard fractional part of result. print(a // b)
14.285714285714286 14
Float. 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").
Detail Float is similar to other built-ins like int or str. Python simplifies common conversions.
Convert
# 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).
Note 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
Bits. 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.
Detail The sign bit is represented by the 0 before the lowercase "b." A -1 has a leading minus sign.
number = 100 # Convert this number to a binary string. result = bin(number) print(result)
0b1100100
bin(-1) -0b1 bin(0) 0b0
Complex. Complexity is not just in our computer programs. We also encounter complex numbers. These numbers have two components—real and imaginary.
Detail Complex numbers include an "imaginary unit" that is separate from the real parts. These numbers never become bored.
Info In Python we have the 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)
Benchmark, division. 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.
Version 1 This version of the code uses the single-slash operator to perform a division.
Version 2 Here we use the double-slash operator to perform division and get an integer-only result.
Result We find that the "//" operator is slower than the "/" operator. It adds steps beyond the regular operator.
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)
Divmod, modulo. 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.
divmod
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.
random
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.
pow
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.
bool
Prime. 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.
Prime
A summary. Numeric operations are everywhere. All memory accesses in programs use numeric computations. In Python, using numbers effectively is important.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Apr 16, 2023 (edit).
Home
Changes
© 2007-2024 Sam Allen.