Преобразование последовательности цифр в русские буквы

Задайте русский алфавит из 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 отдельно от непрерывного диапазона а–я. Пустая строка возвращает ''.

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

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

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

Подробнее