Python. Посимвольное кодирование азбуки Морзе

Затрудняюсь написать код перевода списка

m = ['А Б В В']

в список вида

m = ['.-  -...  .--  .--']

без использования встроенных функций.

Написал для этого свою пробную функцию:

def morze(symbol):
    
    if symbol == 'A':
        return '.-'
    
    if symbol == 'Б':
        return '-...'
        
    if symbol == 'В':
        return '.--'
    
    if symbol == ' ':
        return '  '
        
    else: return 0

И пробую вывести так:

for i in range(0,len(m)):

    print(morze(m[i]), end = " ")

Но конечно же ничего не работает. Есть рекомандация. Однако, она с синтаксисом Java, который мне абсолютно не знаком. Есть так же предложение такого вида. Но там используется функция get, что противоречит заданию.

Список вида

m = ['А', 'Б', 'В', 'В']

перевожу без проблем. Но нужно именно m = ['А Б В В'], где символы разделены не кавычками а пробелами.

Возможно ли это сделать?

Как синтаксически правильно реализовать посимвольный перевод на Python без использования вспомогательных функций?


Ответы (2 шт):

Автор решения: Vahe Sargsyan

вы можете попробовать сделать каждого члена списка ['А Б В В'] отдельным элементом: ['А', 'Б', 'В', 'В'] Затем вы можете работать с новым списком

m = ['А Б В В']
m = m[0].split()
print(m)
→ Ссылка
Автор решения: CrazyElf

Поскольку у вас список из одного элемента, вам нужно итерироваться по этому первому элементу m[0]:

for i in range(0,len(m[0])):
    print(morze(m[0][i]), end = " ")

Так почти всё работает за исключением того, что у вас в списке буква А русская, а в коде программы, где вы проверяете if symbol == 'A': у вас буква A латинская, поэтому это сравнение не срабатывает. Буква должна быть одинаковая и тогда всё заработает.

→ Ссылка