Ord: примеры (PYTHON)
ord(c): intФункция ord в языке Python
Функция ord() является встроенной в Python и предназначена для получения числового представления символа Unicode. Она принимает один обязательный аргумент - строковый символ, состоящий ровно из одного знака, и возвращает целое число - код этого символа в таблице Unicode.
Использование функции требуется в ситуациях, когда необходимо работать с числовыми кодами символов: проверка диапазонов, преобразование кодировок, низкоуровневая обработка текста, реализация криптографических алгоритмов или работа с бинарными протоколами.
Аргументы функции:
- c - единственный аргумент, обязательный. Должен быть строкой (тип
str) и содержать ровно один символ Юникода.
Возвращаемое значение:
- Функция возвращает целое число (тип
int), которое соответствует кодовой позиции переданного символа в стандарте Unicode. Диапазон возвращаемых значений - от 0 до 0x10FFFF.
Простые примеры применения
Пример с символами латинского алфавита:
print(ord('A'))65
Пример с символом кириллицы:
print(ord('я'))1103
Пример с цифрой, переданной как символ:
print(ord('7'))55
Работа со специальными символами:
print(ord('\n'), ord('€'), ord('♫'))10 8364 9835
Похожие инструменты в Python
Обратной к ord() является функция chr(), которая преобразует целочисленный код обратно в символ. Это основная и прямая альтернатива для обратного преобразования.
print(chr(65))A
Для работы с байтами и кодировками применяют методы строк .encode() и байтов .decode(). Они выполняют преобразование целых строк в последовательности байтов согласно заданной кодировке и обратно, что полезно при вводе-выводе.
print('А'.encode('utf-8'))b'\xd0\x90'
Модуль unicodedata предоставляет функции для получения подробных свойств символов Юникода, таких как имя или категория, что выходит за рамки простого получения кода.
Аналоги в других языках программирования
PHP: Функция ord() работает аналогично, но для однобайтовых символов. Для многобайтовых кодировок используют mb_ord().
echo ord('A'); // 65JavaScript: Используют метод String.prototype.charCodeAt(). Возвращает числовое значение UTF-16.
console.log('A'.charCodeAt(0)); // 65Java: Применяют приведение типа char к int или метод String.codePointAt().
int code = (int) 'A'; // 65C#: Используют приведение типа char к int или метод Convert.ToInt32().
int code = (int)'A'; // 65Go: Нет прямой функции. Для рун (тип rune) используют простое преобразование типа.
code := int('A') // 65Kotlin: Используют свойство .code у символа или метод .codePointAt().
val code = 'A'.code // 65Типичные ошибки при работе с функцией
Передача пустой строки вызывает ошибку TypeError.
ord('')TypeError: ord() expected a character, but string of length 0 found
Передача строки, содержащей более одного символа, также приводит к TypeError.
ord('abc')TypeError: ord() expected a character, but string of length 3 found
Попытка передать объект не строкового типа, например число.
ord(65)TypeError: ord() expected string of length 1, but int found
Изменения в новых версиях Python
В Python 3 функция ord() не претерпела существенных изменений в своей сигнатуре или базовом поведении. Основное изменение связано с моделью строк: в Python 3 строки по умолчанию являются последовательностями символов Unicode, в отличие от Python 2, где ord() работала с байтами в строках типа str. Это обеспечивает корректную работу с символами за пределами базовой многоязыковой плоскости (BMP).
Расширенные варианты использования
Проверка, принадлежит ли символ к определенному диапазону, например, является ли буквой латинского алфавита.
def is_latin_letter(c):
code = ord(c)
return (65 <= code <= 90) or (97 <= code <= 122)
print(is_latin_letter('F'), is_latin_letter('д'))True False
Создание простого шифра Цезаря с использованием кодов символов.
def caesar_cipher(text, shift):
result = []
for char in text:
if char.isalpha():
base = ord('A') if char.isupper() else ord('a')
result.append(chr((ord(char) - base + shift) % 26 + base))
else:
result.append(char)
return ''.join(result)
print(caesar_cipher('Hello, World!', 3))Khoor, Zruog!
Подсчет количества символов в строке, чьи коды попадают в нестандартный диапазон, например, математические операторы.
text = 'a + b = c * 2'
math_ops = [c for c in text if 0x2200 <= ord(c) <= 0x22FF]
print(f'Найдено {len(math_ops)} математических символов')Найдено 0 математических символов
Валидация ввода: проверка, что строка содержит только ASCII-символы.
def is_ascii_string(s):
return all(ord(c) < 128 for c in s)
print(is_ascii_string('Python'), is_ascii_string('Пайтон'))True False
Сортировка списка строк по числовому коду первого символа.
words = ['яблоко', 'апельсин', 'банан']
sorted_words = sorted(words, key=lambda x: ord(x[0]))
print(sorted_words)['апельсин', 'банан', 'яблоко']
Генерация последовательности символов по их кодам для создания пользовательского алфавита.
custom_alphabet = [chr(i) for i in range(ord('A'), ord('Z')+1) if chr(i) not in 'AEIOU']
print(custom_alphabet[:10])['B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M']