• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 1. Ввод и вывод данных

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«Код Морзе»

💻 Python

Код Морзе — это способ кодирования символов при помощи последовательностей точек и тире. Каждая буква, цифра или знак препинания имеет свой уникальный код.

При составлении сообщений коды отдельных букв разделяются одним пробелом. Слова разделяются тремя пробелами. Например, сообщение "HI" будет выглядеть как .... ... А сообщение "HEY JUDE" — .... . -.-- .--- ..- -.. ..

Также существует специальный код для сигнала бедствия SOS, который передаётся слитно: ···−−−···. Этот код должен быть обработан как единый неделимый символ "SOS".

Ваша задача — написать программу, которая принимает на вход строку с кодом Морзе и декодирует её в понятный человеку текст. Все буквы в итоговом сообщении должны быть заглавными. Дополнительные пробелы в начале или в конце входной строки должны быть проигнорированы.

MORSE_CODE_DICT = { '.-':'A', '-...':'B', '-.-.':'C', '-..':'D', '.':'E', '..-.':'F', 
'--.':'G', '....':'H', '..':'I', '.---':'J', '-.-':'K', '.-..':'L', 
'--':'M', '-.':'N', '---':'O', '.--.':'P', '--.-':'Q', '.-.':'R', 
'...':'S', '-':'T', '..-':'U', '...-':'V', '.--':'W', '-..-':'X', 
'-.--':'Y', '--..':'Z', '-----':'0', '.----':'1', '..---':'2', 
'...--':'3', '....-':'4', '.....':'5', '-....':'6', '--...':'7', 
  '---..':'8', '----.':'9', '···−−−···':'SOS' }

Формат ввода

Одна строка, содержащая сообщение на коде Морзе. Используются символы . (точка), - (тире) и пробелы.

Формат Вывода

Одна строка — декодированное сообщение в верхнем регистре на английском языке.

Пример

Ввод

.... . -.-- .--- ..- -.. .

Вывод

HEY JUDE

Подсказка

Тут подсказки не будет, решай сам!

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Словарь для сопоставления кодов Морзе и символов.
# Включает специальный код для SOS.
MORSE_CODE_DICT = { '.-':'A', '-...':'B', '-.-.':'C', '-..':'D', '.':'E', '..-.':'F', 
                    '--.':'G', '....':'H', '..':'I', '.---':'J', '-.-':'K', '.-..':'L', 
                    '--':'M', '-.':'N', '---':'O', '.--.':'P', '--.-':'Q', '.-.':'R', 
                    '...':'S', '-':'T', '..-':'U', '...-':'V', '.--':'W', '-..-':'X', 
                    '-.--':'Y', '--..':'Z', '-----':'0', '.----':'1', '..---':'2', 
                    '...--':'3', '....-':'4', '.....':'5', '-....':'6', '--...':'7', 
                    '---..':'8', '----.':'9', '···−−−···':'SOS' }

def decode_morse(morse_code: str) -> str:
    """
    Декодирует строку с кодом Морзе в человекочитаемый текст.
    
    :param morse_code: Строка с кодом Морзе.
    :return: Декодированная строка.
    """
    # Удаляем лишние пробелы в начале и конце строки
    morse_code = morse_code.strip()
    
    decoded_message = []
    # Разделяем сообщение на слова по трём пробелам
    morse_words = morse_code.split('   ')
    
    for morse_word in morse_words:
        decoded_word = ''
        # Разделяем слово на коды букв по одному пробелу
        morse_letters = morse_word.split(' ')
        for letter_code in morse_letters:
            # Находим соответствующий символ в словаре
            # Используем get для избежания ошибки, если код не найден
            decoded_word += MORSE_CODE_DICT.get(letter_code, '')
        decoded_message.append(decoded_word)
        
    # Соединяем декодированные слова в одно предложение
    return ' '.join(decoded_message)

# Пример использования из условия
input_morse = input()
print(decode_morse(input_morse))

🎉 Поздравляем! 🎉

Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.

AD

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!