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 шт):
вы можете попробовать сделать каждого члена списка ['А Б В В'] отдельным элементом: ['А', 'Б', 'В', 'В'] Затем вы можете работать с новым списком
m = ['А Б В В']
m = m[0].split()
print(m)
Поскольку у вас список из одного элемента, вам нужно итерироваться по этому первому элементу m[0]:
for i in range(0,len(m[0])):
print(morze(m[0][i]), end = " ")
Так почти всё работает за исключением того, что у вас в списке буква А русская, а в коде программы, где вы проверяете if symbol == 'A': у вас буква A латинская, поэтому это сравнение не срабатывает. Буква должна быть одинаковая и тогда всё заработает.