Задайте русский алфавит из 33 букв, включая ё, и для каждого числа n выберите alphabet[n−1]. Входные значения должны находиться в диапазоне 1–33.
Преобразование последовательности цифр в русские буквы
Задайте русский алфавит из 33 букв, включая ё, и для каждого числа n выберите alphabet[n−1]. Входные значения должны находиться в диапазоне 1–33.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте функцию, принимающую строку, в которой цифры от 1 до 33 разделены пробелами. Каждому числу соответствует буква русского алфавита согласно справочнику {а: 1, б: 2, в: 3, …, я: 33}. Функция должна вернуть строку, составленную из букв, соответствующих переданным числам.
Пример 1: Ввод: "1 2 3" Вывод: "абв"
Пример 2: Ввод: "33 2 13 16 12 16" Вывод: "яблоко"
Ответ
Задайте русский алфавит из 33 букв, включая ё, и для каждого числа n выберите alphabet[n−1]. Входные значения должны находиться в диапазоне 1–33.
Реализация:
def decode_letters(text):
alphabet = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
result = []
for token in text.split():
number = int(token)
if not 1 <= number <= 33:
raise ValueError('Letter number must be from 1 to 33')
result.append(alphabet[number - 1])
return ''.join(result)
Оба примера дают 'абв' и 'яблоко'. Нельзя просто прибавлять смещение к ord('а'): буква ё расположена в Unicode отдельно от непрерывного диапазона а–я. Пустая строка возвращает ''.