01.
def
string_morse(s):
02.
""" Converte uma cadeia de caracteres para Morse."""
03.
d
=
{
"A"
:
".-"
,
"B"
:
"-..."
,
"C"
:
"-.-."
,
"D"
:
"-.."
,
"E"
:
"."
,
04.
"F"
:
"..-."
,
"G"
:
"--."
,
"H"
:
"...."
,
"I"
:
".."
,
"J"
:
".---"
,
"K"
:
"-.-"
,
"L"
:
".-.."
,
05.
"M"
:
"--"
,
"N"
:
"-."
,
"O"
:
"---"
,
"P"
:
".--."
,
06.
"Q"
:
"--.-"
,
"R"
:
".-."
,
"S"
:
"..."
,
"T"
:
"-"
,
"U"
:
"..-"
,
07.
"V"
:
"...-"
,
"W"
:
".--"
,
"X"
:
"-..-"
,
"Y"
:
"-.--"
,
"Z"
:
"--.."
}
08.
l
=
list(s.upper().replace(
'\n'
,''))
09.
lf
=
[]
10.
for
char
in
l:
11.
lf.append(d[char])
12.
sf
=
''.join(lf)
13.
return
sf
O que se pode dizer da solução? Em primeiro lugar, usamos um dicionário para estabelecer a correspondência entre cada caracter e o correspondente código (linha 3). De seguida, na linha 3, normalizamos a cadeia para maiúsculas, retiramos o caracter correspondente à mudança de linha e convertemos tudo numa lista de caracteres. O programa propriamente dito conjuga duas ideias já muito trabalhadas. A primeira, é o modo de varrer uma estrutura através de um ciclo. Neste caso, como se pretende substituir os caracteres é natural que a travessia se faça pelo conteúdo da lista e não pelos índices. A segunda, é o recurso a uma variável que funciona como acumulador, neste caso da solução, solução essa que vai sendo construída de modo progressivo em cada etapa do ciclo. É inicializada na linha 9, e actualizada na linha 11. Finalmente (linha 12), reconstruímos a cadeia de caracteres Morse.
Sem comentários:
Enviar um comentário