def string_morse(s):
""" Converte uma cadeia de caracteres para Morse."""
d={"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":"--.."}
l= list(s.upper().replace('\n',''))
lf=[]
for char in l:
lf.append(d[char])
sf=''.join(lf)
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