Конвертация русских букв в их порядковые номера

Создайте отображение 33 русских букв, включая ё, в номера от 1 до 33. Преобразуйте каждую букву и соедините номера одиночными пробелами.

Короткий ответ

Что ответить на собеседовании

Создайте отображение 33 русских букв, включая ё, в номера от 1 до 33. Преобразуйте каждую букву и соедините номера одиночными пробелами.

Подробный разбор

Ответ с пояснениями

Условие

Создайте функцию, принимающую строку на русском языке и возвращающую последовательность чисел, разделённых пробелами. Каждая буква должна быть заменена на своё порядковое значение согласно словарю, где ключи – буквы русского алфавита (а: 1, б: 2, …, я: 33).

Пример 1: Ввод: "абв" Вывод: "1 2 3"

Пример 2: Ввод: "яблоко" Вывод: "33 2 13 16 12 16"

Ответ

Создайте отображение 33 русских букв, включая ё, в номера от 1 до 33. Преобразуйте каждую букву и соедините номера одиночными пробелами.

Вариант с нормализацией регистра и отклонением посторонних символов:

def encode_letters(text):
    alphabet = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
    positions = {letter: index for index, letter in enumerate(alphabet, 1)}
    result = []
    for letter in text.lower():
        if letter not in positions:
            raise ValueError('Expected Russian letters only')
        result.append(str(positions[letter]))
    return ' '.join(result)

'яблоко' даёт '33 2 13 16 12 16'. Пробелы и пунктуация здесь не пропускаются молча: их обработка требует отдельного правила. Пустая строка даёт ''.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее