Создайте отображение 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'. Пробелы и пунктуация здесь не пропускаются молча: их обработка требует отдельного правила. Пустая строка даёт ''.