Ord, chr. Think of letters like A, B and C. These are parts of words. But they have an underlying representation. A sequence of bits that represents that letter.
Characters. In Python characters are represented by numbers. Often we use a one-character string. With ord we convert this into an integer. With chr, an integer into a string.
Ord example. In this program, each "letter" is a one-character string. We call ord and the result in an integer. We can do things like multiply or add that integer.
Note The letters A, B and C have sequential numbers. This is how they are stored in ASCII.
Note 2 The number strings 1, 2 and 3 are made of characters that are represented in ASCII by 49, 50 and 51.
letters = "ABCabc123"
for letter in letters:
# Get number that represents letter in ASCII.
number = ord(letter)
print(letter, "=", number)A = 65
B = 66
C = 67
a = 97
b = 98
c = 99
1 = 49
2 = 50
3 = 51
Chr example. Next we consider the chr built-in function. This does the opposite of ord. It converts a number (an integer) into a one-character string.
Here We convert 97 back into the lowercase "a." This code could be used to round-trip letters and digits.
numbers = [97, 98, 99]
for number in numbers:
# Convert ASCII-based number to character.
letter = chr(number)
print(number, "=", letter)97 = a
98 = b
99 = c
Chr, translate. Let's do something really crazy. Here we create strings with chr in for-loops for use as the mapped keys and values of maketrans. We then translate the strings.
So We generate translation keys and values with an algorithm, and then apply the generated table to translate strings.
# Generate string for translation.
initial = ""
for i in range(97, 97 + 26):
initial += chr(i)
# Generate mapped chars for string.
translated = ""
for i in range(97, 97 + 26):
translated += chr(i - 10)
print("INITIAL ", initial)
print("TRANSLATED", translated)
# Create a lookup table.
table = str.maketrans(initial, translated)
# Translate this string.
value = "thank you for visiting"
result = value.translate(table)
print("BEFORE", value)
print("AFTER ", result)INITIAL abcdefghijklmnopqrstuvwxyz
TRANSLATED WXYZ[\]^_`abcdefghijklmnop
BEFORE thank you for visiting
AFTER j^Wda oek \eh l_i_j_d]
ROT13. The simplest examples above would not be found in real programs. But algorithms like ROT13, which are used sometimes in programs, also can be implemented with ord and chr.
Also Ord and chr built-ins help transform characters and strings. But they are not ideal for all translations.
A summary. Chr and ord are something we need to know to effectively use Python. There is a difference between an integer and a one-character string.
We must convert to an integer with ord—and back to a string with chr. We can change characters by adding or subtracting offset values.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.