Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/309: Рейтинг темы: голосов - 309, средняя оценка - 4.76
-2 / 1 / 0
Регистрация: 11.10.2019
Сообщений: 43

Азбука Морзе

25.03.2020, 00:47. Показов 65137. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Азбука Морзе.
Напишите программу, которая умеет переводить текст в азбуку Морзе и наоборот. Для "тире" используйте символ "—", для "точки" – символ "•". Гарантируется, что все текстовые сообщения состоят только из букв латинского алфавита, а все сообщения в коде Морзе состоят только из символов "—" и "•". Знаки препинания не используются. Буквы в коде Морзе должны разделяться пробелом, а слова – символом табуляции.
ВВОД
Кликните здесь для просмотра всего текста

The quick brown fox jumps over the lazy dog


ВЫВОД
Кликните здесь для просмотра всего текста

— •••• • ——•— ••— •• —•—• —•— —••• •—• ——— •—— —• ••—• ——— —••— •——— ••— —— •——• ••• ——— •••— • •—• — •••• • •—•• •— ——•• —•—— —•• ——— ——•

ВВОД
Кликните здесь для просмотра всего текста

— •••• • ——•— ••— •• —•—• —•— —••• •—• ——— •—— —• ••—• ——— —••— •——— ••— —— •——• ••• ——— •••— • •—• — •••• • •—•• •— ——•• —•—— —•• ——— ——•


ВЫВОД
Кликните здесь для просмотра всего текста

the quick brown fox jumps over the lazy dog


Сам словарь
Python
1
2
# для Вашего удобства словарь вида "буква: код Морзе" уже готов
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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2020, 00:47
Ответы с готовыми решениями:

Азбука Морзе
Эта задача — коллективная. Выберите себе одного или двух человек в группу. Ваша задача — совместными усилиями написать программу, которая...

Азбука Морзе
Делал задачу из яндекс лицея, где надо переводить текст в азбуку Морзе и обратно. Всё зашибись, но есть одна проблема: она у меня не...

Азбука морзе
из словаря MORSE_CODE_DICT в конечном результате не выводятся все буквы

10
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.03.2020, 09:23
В чём проблема?
0
-2 / 1 / 0
Регистрация: 11.10.2019
Сообщений: 43
25.03.2020, 13:18  [ТС]
Проблема глобального характера,даже не знаю с чего начать решения,я понимаю что через словарь, но чет они туго идут у меня, я не прошу готовый ответ, хотя бы что то похожее,или принцип решения
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.03.2020, 15:03
Лучший ответ Сообщение было отмечено strannikkk999 как решение

Решение

Цикл по строке. Каждый символ заменяем на значение в словаре.
1
-2 / 1 / 0
Регистрация: 11.10.2019
Сообщений: 43
25.03.2020, 15:53  [ТС]
Спасибо большое, я сделал так как вы сказали и почти все получилось вот код, но почему то не проходит первый тест (скорее всего из-за количества лишних пробелов), а во втором не получается выводить значение по ключу.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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': '——••'}
 
 
a = input()
a = a.lower()
g = []
j=0
 
for i in a:
    k = morze.get(i,'\t')
    if k != '\t':
        j = k+" "
        g.append(j)
    else:
        j ='\t'
        g.append(j)
print("".join(g))
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.03.2020, 16:34
Цитата Сообщение от strannikkk999 Посмотреть сообщение
Буквы в коде Морзе должны разделяться пробелом, а слова – символом табуляции.
Хм...

Python
1
2
3
4
5
6
7
result = []
for word in 'trixie is best pony'.split()
    word2 = []
    for i in word
        word2.append(morze[i])
    result.append(' '.join(word2))
print('\t'.join(result))
0
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
14.05.2022, 12:28
Решал подобную задачу. Вот мой вариант решения
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
morse = 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', '——••'),('1', '•————'),('2', '••———'),('3', '•••——'),('4', '••••—'),('5', '•••••'),('6', '—••••'),('7', '——•••'),('8', '———••'),('9', '————•'),('0', '—————')))
 
def Morse(s):
    a = ''
    for i in s.upper():
        if i in morse.keys(): a += morse[i] + ' '
        if i == ' ': a += ' / '  # Слова разделяются слэшем          
    return a
 
def get_key(val, dct):  # Функция возвращает ключ словаря по значению
    for key, value in dct.items():
        if val == value: return key
 
def MorseTxt(s):
    a, s = '', s.split()
    for i in s: 
        if i in morse.values(): a += get_key(i, morse)
        if i == '/': a += ' '
    return a
 
a = 'The quick brown fox jumps over the lazy dog'
print(Morse(a))
print(MorseTxt(Morse(a)))
0
1 / 1 / 0
Регистрация: 11.11.2022
Сообщений: 4
20.12.2022, 18:26
Для будущих поколений. Вариант кода со всеми стандартами.

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

result = []
enter = input()
for word in enter.split():
word2 = []
for i in word:
word2.append(morze[i])
result.append(' '.join(word2))
print('\n'.join(result))
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2022, 18:28
Цитата Сообщение от Ceslav Посмотреть сообщение
Вариант кода со всеми стандартами.
А str.lower() было слабо сделать? Или вам построчно платят?
0
1 / 1 / 0
Регистрация: 11.11.2022
Сообщений: 4
20.01.2023, 20:29
Прошу простить меня. При своём решении я не преследовал цели сократить длину кода. В любом случае, исправляюсь:
Python
1
2
3
4
5
6
7
8
9
10
11
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': '--..'}
result = []
enter = input()
for word in enter.split():
    word2 = []
    for i in word:
        word2.append(morze[i])
    result.append(' '.join(word2))
print('\n'.join(result))
0
4 / 4 / 0
Регистрация: 31.12.2023
Сообщений: 18
09.04.2024, 10:27
Моя программа вот:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Словарь MorseCode с кодами Морзе для каждой буквы латинского алфавита, цифр, и символов
MorseCode = {
    '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': '--..',
    '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...',
    '8': '---..', '9': '----.', '0': '-----',
    '.': '.-.-.-', ',': '--..--', '?': '..--..', '!': '-.-.--', "'": '.----.', '"': '.-..-.', '(': '-.--.',
    ')': '-.--.-', '&': '.-...', ':': '---...', ';': '-.-.-.', '/': '-..-.', '_': '..--.-', '=': '-...-',
    '+': '.-.-.', '-': '-....-', '$': '...-..-', '@': '.--.-.', ' ': '/'
}
 
 
# Функция для кодирования текста в код Морзе
def encode_to_morse(text):
    encoded_text = ''
    for char in text.upper():
        if char in MorseCode:
            encoded_text += MorseCode[char] + ' '
        elif char == ' ':
            encoded_text += ' '
    return encoded_text.strip()
 
 
# Функция для декодирования кода Морзе в текст
def decode_from_morse(code):
    decoded_text = ''
    code_list = code.split(' ')
    for symbol in code_list:
        if symbol in MorseCode.values():
            for letter, morse in MorseCode.items():
                if morse == symbol:
                    decoded_text += letter
        elif symbol == '/':
            decoded_text += ' '
    return decoded_text
 
 
# Функция для взаимодействия с пользователем
def main():
    while True:
        choice = input("Выберите операцию: \n1. Закодировать текст\n2. Раскодировать текст\n3. Выйти\n")
        if choice == '1':
            text = input("Введите текст для кодирования: ")
            print("Закодированный текст: ", encode_to_morse(text))
        elif choice == '2':
            code = input("Введите код Морзе для декодирования: ")
            print("Раскодированный текст: ", decode_from_morse(code))
        elif choice == '3':
            print("Выход из программы.")
            break
        else:
            print("Неверный ввод. Пожалуйста, выберите 1, 2 или 3.")
 
 
if __name__ == "__main__":
    main()


Система написала:
Вердикт: ok
Статус изменен: status-review
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.04.2024, 10:27
Помогаю со студенческими работами здесь

Азбука Морзе
Дед Мороз получил необычное письмо, оно представляло собой последовательность точек и тире. Он понял, что это письмо закодировано с помощью...

Азбука Морзе
import sys from PyQt5.QtWidgets import QLineEdit, QPushButton from PyQt5.QtWidgets import QWidget, QApplication dct = {'А':...

Азбука морзе
Разместите на форме кнопки с латинскими буквами, а так же поле для ввода. При нажатии на кнопку добавляйте в поле код этой буквы из азбуки...

Азбука Морзе
Не проходит 3 теста из 7. Понимаю, очень коряво и костыльно, но хочешь жить - умей вертеться) Пожалуйста, помогите исправить ошибки,...

Азбука морзе
Напишите программу, которая умеет переводить текст в азбуку Морзе и наоборот. Для "тире" используйте символ "—", для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru