• 1
    数据输入输出
    • 任务
  • 2
    条件语句
    • 任务
  • 3
    for循环
    • 任务
  • 4
    字符串
    • 任务
  • 5
    while循环
    • 任务
  • 6
    列表
    • 任务
  • 7
    二维数组
    • 任务
  • 8
    字典
    • 任务
  • 9
    集合
    • 任务
  • 10
    函数与递归
    • 任务
  • к

课程 1. Entering and output of data

难度:

任务«莫尔斯电码»

💻 Python

摩尔斯电码 — 是一种使用点和划的序列对符号进行编码的方式。每个字母、数字或标点符号都有其独特的代码。

rn

在编写消息时,单个字母的代码之间用一个空格分隔。单词之间用三个空格分隔。例如,消息 "hi" 将显示为   .... .. 。而消息 "Hey Jude" —   ..... . -.-- .--- ..- -.. . 。

rn

还有一个用于灾难信号 SOS 的特殊代码,其传输方式如下:  · · · − − − · · · 。该代码应作为一个不可分割的符号 "SOS" 进行处理。

rn

你的任务 — 编写一个程序,接收一行摩尔斯电码作为输入,并将其解码为人类可理解的文本。最终消息中的所有字母应为大写。输入行开头或结尾的多余空格应被忽略。

输入格式

一行包含摩尔斯电码消息的文本。符号之间用空格分隔。

输出格式

一行——解码后的英文大写消息。

示例

输入

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

输出

嘿,裘德

提示

There will be no clue here, decide for yourself!

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

正在运行代码...

AI助手

你好!我是你的编程助手。随时向我提问关于 Python 的问题——我可以解释函数、方法,并帮助你完成当前任务!