Функция ord()
Функция ord()
позволяет определить код некоторого символа в таблице символов Unicode. Аргументом данной функции является одиночный символ.
Приведённый ниже код:
num1 = ord('A')
num2 = ord('B')
num3 = ord('a')
print(num1, num2, num3)
выводит:
65 66 97
Обратите внимание, что функция ord()
принимает именно одиночный символ. Если попытаться передать строку, содержащую более одного символа, мы получим ошибку времени выполнения.
Приведённый ниже код:
num = ord('Abc')
print(num)
приводит к возникновению ошибки:
TypeError: ord() expected a character, but string of length 3 found
Название функции ord()
происходит от английского слова «order» — порядок.
Функция chr()
Функция chr()
позволяет определить по коду символа сам символ. Аргументом данной функции является численный код.
Приведённый ниже код:
chr1 = chr(65)
chr2 = chr(75)
chr3 = chr(110)
print(chr1, chr2, chr3)
выводит:
A K n
Название функции chr()
происходит от английского слова «character» — символ.
Функции ord()
и chr()
часто работают в паре. Мы можем использовать следующий код для вывода всех заглавных букв английского алфавита:
for i in range(26):
print(chr(ord('A') + i))
Приведённый выше код выводит:
A
B
C
...
X
Y
Z
Вызов функции ord('A')
возвращает код символа A
, который равен 65. Далее на каждой итерации цикла к данному коду прибавляется значение переменной i = 0, 1, 2, ..., 25
, а затем полученный код преобразуется в символ с помощью вызова функции chr()
.
Примечания
Примечание 1. Функции ord()
и chr()
являются взаимно обратными. Для них выполнены равенства:
chr(ord(<символ>)) = <символ>
ord(chr(<код символа>)) = <код символа>
Например, ord('A')
возвращает число 65
, а chr(65)
возвращает символ 'A'
. То есть chr(ord('A'))
возвращает символ A
. В обратную сторону это также работает: ord(chr(65))
возвращает число 65
.
Приведённый ниже код:
print(chr(ord('A')) == 'A')
print(ord(chr(65)) == 65)
выводит:
True
True
Примечание 2. Обратите внимание, что некоторые символы могут выглядеть одинаково, но на самом деле иметь разные коды в таблице Unicode. Это в первую очередь касается букв, которые имеют одинаковое написание на разных языках.
Приведённый ниже код:
print(ord('a'))
print(ord('а'))
выводит:
97
1072
Также можно заметить, что в таблице Unicode русские буквы находятся гораздо дальше английских.