Азбука Морзе существует с начала 1800-х годов и нашла свое применение в эпоху цифровых технологий. От использования азбуки Морзе в качестве критического средства связи во время Второй мировой войны до отправки зашифрованных сообщений в авиации и на море — азбука Морзе никуда не делась.
Если вы не знакомы с этим увлекательным языком, приготовьтесь не только открыть для себя азбуку Морзе, но и создать свой собственный переводчик с помощью Python.
Что такое азбука Морзе?
Азбука Морзе — это метод связи, при котором текстовые символы кодируются в стандартную последовательность из двух сигналов разной продолжительности, обозначаемых точками и тире. Код Морзе получил свое название от Сэмюэля Морзе, одного из изобретателей телеграфа. Вы можете запомнить его и передать через звуковые волны или видимый свет, воспринимаемый человеческими органами чувств.
Длина эквивалента азбуки Морзе обратно пропорциональна нашей частоте использования этого алфавита, и вы можете видеть, что азбука Морзе присваивает наиболее распространенной букве в английском языке, Е, просто точку.
Вы можете использовать эти бесплатное программное обеспечение и приложения азбуки Морзе для отправки закодированных сообщений для другого. С другой стороны, выучить азбуку Морзе довольно просто, и вы можете выучить ее в течение месяца при достаточном количестве практики. Чтобы помочь вам начать работу, вот девять сайтов для изучения азбуки Морзе бесплатно.
Как создать переводчик азбуки Морзе с помощью Python
Начните с определения словаря Python с именем MORSE_CODE_DICT для хранения значений кода Морзе. Ключами будут буквы английского алфавита с соответствующей последовательностью точек или тире в качестве соответствующего значения. Используя словарь, вы можете быстро найти любой ключ по его соответствующему значению.
MORSE_CODE_DICT = { «А»:'.-', 'Б':'-...',
'С':'-.-.', 'Д':'-..', 'Е':'.',
'Ф':'..-.', 'Г':'--.', 'ЧАС':'...',
'Я':'..', 'Дж':'.', 'К':'-.-',
'Л':'.-..', 'М':'--', 'Н':'-.',
'О':'', 'П':'.--.', 'В':'--.-',
'Р':'.-.', 'С':'...', 'Т':'-',
'У':'..-', 'В':'...-', 'В':'.--',
'ИКС':'-..-', 'Д':'-.--', 'З':'--..',
'1':'.', '2':'..', '3':'...--',
'4':'...-', '5':'...', '6':'-...',
'7':'--...', '8':'..', '9':'.',
'0':'', ', ':'--..--', '.':'.-.-.-',
'?':'..--..', '/':'-..-.', '-':'-...-',
'(':'-.--.', ')':'-.--.-' }
Объявите функцию с именем encrypt, которая принимает сообщение как входной параметр. Внутри функции инициализируйте переменную с именем шифр с пустой строкой. Вы будете использовать это для создания и хранения зашифрованного сообщения. Затем объявите цикл for, который перебирает каждую букву в сообщении.
Если буква не является пробелом, передать ее в словарь для поиска. Словарь возвращает соответствующее значение кода More на основе ключа. Добавьте пробел для разделения символов азбуки Морзе и используйте стенографию += оператора, чтобы соединить его с кодом, полученным из словаря. Если буква представляет собой пробел, добавьте дополнительный пробел к шифру; Азбука Морзе разделяет слова двумя последовательными пробелами.
дефшифровать(сообщение):
шифр = ""
для письма в сообщении:
если буква != " ":
шифр += MORSE_CODE_DICT[буква] + " "
еще:
шифр += " "
возвращаться шифр
Объявите функцию с именем decrypt, которая принимает сообщение как входной параметр. Добавьте пробел в конце, используя сокращенный оператор для доступа к последнему символу азбуки Морзе. Инициализировать две переменные, расшифровать и информационный текст для хранения пустых строк. Переменная расшифровки будет содержать расшифрованное предложение, состоящее из английского алфавита, в то время как вы используете citext для хранения каждой буквы азбуки Морзе.
Повторите цикл for, который проходит через каждую букву азбуки Морзе. Если буква не является пробелом, инициализируйте переменную-счетчик i, которая отслеживает количество пробелов до нуля и сохраняет код Морзе одного символа в citext. В противном случае буква является пробелом, поэтому увеличьте счетчик на единицу.
Если счетчик равен двум, это означает, что вы должны добавить пробел к расшифровываемой переменной слова decipher. В противном случае получите доступ к ключам, используя их значения. Для этого переберите пары ключ-значение в словаре с помощью функции items. Если citext равен значению, добавьте соответствующий ключ к переменной расшифровки с помощью сокращенного оператора.
Наконец, очистите citext, чтобы получить следующую букву, и верните полученное расшифрованное предложение в вызов функции.
дефрасшифровать(сообщение):
сообщение += " "
расшифровать = ""
текст = ""для письма в сообщении:
если буква != " ":
я = 0
цитекст += буква
еще:
я += 1если я == 2:
расшифровать += " "
еще:
дляключ, ценитьвMORSE_CODE_DICT.предметы():
если citext == значение:
расшифровать += ключтекст = ""
возвращаться расшифровать
Протестируйте функции с помощью примера ввода. Начните с инициализации переменной с именем сообщение со словом или предложением, которое вы хотите зашифровать. Использовать верхний для преобразования всех букв в верхний регистр и передачи их в функцию шифрования в качестве аргумента. Азбука Морзе содержит только прописные буквы, которые являются ключами в словаре. Это также помогает избежать ненужных проверок допустимого регистра во время выполнения.
Распечатайте полученное значение, чтобы просмотреть код Морзе, эквивалентный исходному предложению.
Затем сохраните азбуку Морзе в переменной сообщения и передайте ее функции расшифровки. Распечатайте результат и проверьте его правильность.
Вместо жесткого кодирования ввода вы можете принять его от пользователя с вход() функция.
сообщение = "Используй"
результат = зашифровать (message.upper())
Распечатать(результат)
сообщение = "-- .- -.-. ..-.... ..-."
результат = расшифровать (сообщение)
Распечатать(результат)
Вывод переводчика азбуки Морзе в Python
Программа Python переводит каждую букву английского алфавита в ее эквивалент азбуки Морзе и отображает ее на экране вывода терминала, как показано на рисунке. Если вы скопируете полученный вывод и передадите его для расшифровки, вы получите исходный текст, который вы передали ранее. Это подтверждает, что перевод работал идеально.
Мобильные приложения для азбуки Морзе
Переводчики азбуки Морзе доступны бесплатно прямо у вас под рукой. Более сотни приложений, таких как Morse Mania, Morse Trainer, Morse Code Reader, Morse Code Keyboard и Morse Code Translator, доступны на разных платформах. К вашему удивлению, он даже поддерживается GBoard — клавиатурой Google.
Чтобы получить доступ к азбуке Морзе на Gboard, откройте значок «Настройки» на Gboard, выберите «Языки» и нажмите «Английский (США)». Проведите пальцем вправо по параметрам, а затем выберите азбуку Морзе. Теперь ваша клавиатура поддерживает вставку азбуки Морзе, а также службы специальных возможностей, такие как TalkBack, Switch Access или Select to Speak.