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
6 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
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?