Всем доброго дня! Есть задача по азбуке Морзе на Питоне. Сделать надо через словарь. Из условия: Весь текст записан в единственной строке. Текст состоит из английских букв и пробелов, других символов в тексте нет.
В тексте не может быть двух или более пробелов подряд. Выведите каждое слово исходного текста, закодированное азбукой Морзе, на отдельной строке. Количество строк в ответе должно совпадать с количеством слов в исходном тексте. Между закодированными буквами нужно ставить ровно один пробел. Например, слово «Help» превратится в «. . .-.. .—.».
Обратите внимание, что строчные и заглавные буквы кодируются одинаково. Сам вопрос перевода решил легко — на другом курсе уже решил похожую задачу. Но тут бьюсь над переносом (каждое слово на отдельной строке).
morze = # собственно, словарь перевода текста в код text = input().lower().split() # Houston we have a problem text = ‘n’.join(text) print(text) # проверочный принт — каждое слово на отдельной строке for i in text: for key, value in morze.items(): if i==key: print(value, end=’ ‘) # однако в итоге получаем код одной строчкой
Есть еще вариант с костылем — я добавил в словарь еще одну пару значений для пробела: ‘ ‘: ‘n’
morze = text = input().lower() for i in text: for key, value in morze.items(): if i==key: print(value, end=’ ‘)
- перед каждым кодом выводится лишний пробел (как я понимаю, унаследованный от предыдущего слова)
- в комментах пишут что с таким костылем не принимается задача, т.к. сам словарь предоставлен платформой «как есть» без права его как-то модифицировать.
Пробовал такой акт отчаяния:
Азбука Морзе Для Учебы #Shorts
if i==’ ‘: print(‘n’)
Но там слова выводились с какими-то гигантскими промежутками.
Как реализовать перевод строки?
Источник: ru.stackoverflow.com
Как перевести азбуку Морзе на английский язык в C ++?
В настоящее время я пытаюсь найти способ создать функцию для перевода кода Морзе на английский язык. Вот мой код (ПРИМЕЧАНИЕ: НЕ ВЕСЬ КОД) int main ()
bilah 26 Дек 2020 в 21:26
1 ответ
Лучший ответ
Здесь вы не разбиваете код на буквы, используя «» в качестве разделителя. Попробуй это,
string convertToEnglish(string morse, string const morseCode[], string const alpha[]) < string output; string compile; string currentCodeLetter; int totalMorseCode=38; string str = morse; istringstream iss(str); // This is kinda a hack. while ( getline( iss, currentCodeLetter, ‘ ‘ ) ) < for(int marker=0;markerreturn output; >
Для более оптимального решения просто погуглите, как разбить строку на «», StackOverflow уже получил вашу поддержку :).
Обнаружение 3 пробелов
string convertToEnglish(string morse, string const morseCode[], string const alpha[]) < string output; string compile; string currentCodeLetter; int totalMorseCode=38; string str = morse; String prev; istringstream iss(str); // This is kinda a hack. while ( getline( iss, currentCodeLetter, ‘ ‘ ) ) < for(int marker=0;markerprev = currentCodeLetter; output += compile + » «; compile = «»; > return output; >
Источник: question-it.com
Проморгал слово «пытки» азбукой Морзе (TORTURE)
Как создать переводчик азбуки Морзе с помощью Python
Азбука Морзе — это метод кодирования сообщения с использованием точек, тире и пробелов. Он широко используется для тайной передачи сообщений.
Возможно, вы видели использование азбуки Морзе в морских сценах многих фильмов для передачи сообщений. Здесь мы говорим об одной и той же азбуке Морзе, но с той лишь разницей, что мы собираемся написать программу на Python для перевода с английского на азбуку Морзе и наоборот.
азбука Морзе
Код Морзе имеет разные шаблоны для каждого английского алфавита, цифр, знаков препинания и нелатинских символов. Как только вы узнаете шаблоны азбуки Морзе для разных символов, вам будет легко их кодировать и декодировать. Вы можете обратиться к странице азбуки Морзе в Википедии для получения более подробной информации и шаблонов.
В этом уроке мы узнаем, как кодировать простой английский текст в азбуку Морзе и наоборот. Мы будем использовать английский алфавит, цифры и знаки препинания при кодировании декодирования. Если вы хотите добавить больше типов символов, вы легко сможете это сделать, как только изучите основы кодирования и декодирования.
Следует помнить, что как прописные, так и строчные буквы имеют один и тот же шаблон азбуки Морзе. Это связано с тем, что азбука Морзе в основном используется для общения, которое не заботится о регистрах алфавита, таких как повседневные разговоры.
Давайте перейдем к части кодирования для кодирования и декодирования.
С английского на азбуку Морзе
Алгоритм преобразования простого английского текста в азбуку Морзе прост. Проверим алгоритм.
- Азбука Морзе содержит пробел после каждого символа и двойной пробел после каждого слова.
- Поэтому, когда мы сталкиваемся с пробелом в тексте, который является разделителем слов, нам нужно добавить к результату двойной пробел.
Попробуйте написать код на Python. Не волнуйтесь, даже если вы не в состоянии написать его полностью.
Давайте проверим код для кодирования простого английского текста в азбуку Морзе.
Вы можете увидеть вывод азбуки Морзе ниже. Вы также должны увидеть аналогичную азбуку Морзе в своем терминале, если вы не изменили сообщение.
Ура! мы получили азбуку Морзе. Вы знаете, что будет после.
Прежде чем перейти к программе декодирования, давайте ненадолго остановимся и подумаем, как написать код для его декодирования.
Вы должны были подумать об обращении словаря CHARS_TO_MORSE_CODE_MAPPING в качестве одного из шагов. Выполнение этого вручную является беспокойным и требует обновления всякий раз, когда исходное сопоставление изменяется. Давайте напишем код для реверсирования словаря.
def reverse_mapping(mapping): reversed = <> for key, value in mapping.items(): reversed[value] = key return reversed