G. Азбука Морзе

Вам дан английский текст. Закодируйте его с помощью азбуки Морзе Каждая буква заменяется на последовательность точек и тире. В качестве тире используйте обычный дефис: -, а в качестве точки — точку .. Например, буква g превратится в трёхсимвольную строку --.. Между закодированными буквами ставится ровно один пробел. Например, слово Help превратится в .... . .-.. .--.. Обратите внимание, что строчные и заглавные буквы кодируются одинаково.

Формат ввода

Весь текст записан в единственной строке. Текст состоит из английских букв и пробелов, других символов в тексте нет. В тексте не может быть двух или более пробелов подряд.

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

Выведите каждое слово исходного текста, закодированное азбукой Морзе, на отдельной строке.
Количество строк в ответе должно совпадать с количеством слов в исходном тексте.

Примечание

Один из вариантов словаря с Азбукой Морзе:

    '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': '----.'

Пример

Ввод

Hello world

Вывод

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

Ввод

Help me SOS

Вывод

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

Решение

Простая задача на словари. Задаем словарь, где каждой английской букве соответствует код Морзе*. Читаем строку и для каждой буквы выводим соотвествующий символ. Если встретили пробел — переводим вывод на новую строку. Но можно и добавить пробел в словарь со значением ‘\n’. тогда все еще немного упроститься.

* Обратите внимание на то, что имя словаря задано заглавными буквами. В python так принято обозначать переменные которые нельзя менять — в других языках программирования их называют константы. На самом деле эти переменные не являются константами в строгом смысле слова. В отличии от других языков программирования их можно менять. Но смысл от этого не меняется — другие программисты будут знать, что это значение изменять нельзя.

Посмотреть код

Решение

Python
MORZE = {'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': '----.'}

for char in input():
    if char != ' ':
        print(MORZE[char.upper()], end=' ')
    else:
        print()
Подписаться
Уведомить о
guest
8 комментариев
Старые
Новые Популярные
Smotri
Smotri
19.10.2024 02:42

Доброго времени суток!
Подскажите суть проблемы

код:
text = input().upper()
listing = text.split()
dicty = {‘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’: ‘—-.’}
for word in listing:
    width = len(word)
    for i in range(width):
        print(dicty.get(word[i], ‘-‘) + ‘ ‘, end=»)
    print()

Лог компиляции:
stdout:
/bin/sh ./build.sh 1>&2

stderr:
solution.py:4:1: E128 continuation line under-indented for visual indent
solution.py:5:1: E128 continuation line under-indented for visual indent
solution.py:6:1: E128 continuation line under-indented for visual indent
solution.py:7:1: E128 continuation line under-indented for visual indent
solution.py:8:1: E128 continuation line under-indented for visual indent
solution.py:9:1: E128 continuation line under-indented for visual indent
solution.py:10:1: E128 continuation line under-indented for visual indent
solution.py:11:1: E128 continuation line under-indented for visual indent
solution.py:12:1: E128 continuation line under-indented for visual indent
solution.py:13:1: E128 continuation line under-indented for visual indent
solution.py:14:1: E128 continuation line under-indented for visual indent
solution.py:15:1: E128 continuation line under-indented for visual indent
Код не соответствует стандарту PEP8
или в нем есть синтаксические ошибки
make: *** [Makefile:2: build] Error 1

Smotri
Smotri
Ответить на  Сергей Клочко
19.10.2024 18:22

Спасибо за ответ, позвольте немного не по теме, однако этот вопрос у меня возник именно на стадии решения этой задачи. При выводе принта, из соображений удобства, я начал писать f-строку, и столкнулся с вопросом, на который гугл не нашёл мне ответа =) Возможно ли вообще в f-строку засунуть end=», если вообще возможно перенос строки например убрать, то каким способом это можно сделать в рамках использования f-строк

Smotri
Smotri
Ответить на  Сергей Клочко
19.10.2024 20:08

То есть нет способа сделать, что-то вроде print(f'{b}’, end=») для итерируемой переменной b?

Niko
Niko
27.02.2025 15:45

x = input().upper()
y = list()
d = {
    ‘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’: ‘—-.’
     }

for i in x:
    if i in d:
        y.append(d.get(i))
    elif i == ‘ ‘:
        print(‘ ‘.join(y))
        y = list()
print(‘ ‘.join(y))

Ильгиз
Ильгиз
05.10.2026 11:46

Мой вариант решения этой задачи ниже. Только не «MORZE», а «MORSE» вроде как.

MORSE = {‘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’: ‘—-.’}

decoding = []
for word in input().upper():
  if word in MORSE:
    decoding.append(MORSE[word])
  elif » » == word:
    decoding.append(«\n»)
print(» «.join(decoding).replace(«\n «, «\n»))

Последний раз редактировалось 9 дней назад Ильгиз ем