Duas amigas estabeleceram o código abaixo para que suas mensagens não fossem lidas pelas demais pessoas.
0 | 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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
Observe que cada letra equivale a um número entre 1 e 26 , e o espaço ao 0 . Faça um programa que receba como entrada uma lista de números representando uma mensagem codificada, armazene estes valores em uma lista e depois traduza a mensagem de acordo com o código das amigas.
Passo 1
Beleza, o enunciado diz que temos um código onde cada número de 0 a 26 representa um caractere: 0 é espaço, 1 é “a”, 2 é “b” … até 26 ser “z”. O que a gente precisa fazer é escrever um programinha que:
- receba como entrada uma sequência de números (tipo “8 5 12 12 15”),
- armazene esses números numa lista,
- e então converta cada número na sua letra correspondente pra imprimir a mensagem decodificada.
Conteúdo envolvido: listas, índices, leitura de entrada, loop e concatenação de strings.
Passo 2
Primeiro, vamos montar a tabela de tradução numa lista chamada
codigo
. A ideia é que codigo[n]
seja o caractere certo para o número n
. Em Python dá pra fazer assim:codigo = []
for n in range(0, 27):
if n == 0:
codigo.append(' ') # 0 vira espaço
else:
# chr(96 + n) gera 'a' para n=1, 'b' para n=2, etc.
codigo.append(chr(96 + n))
Teoria rápida: a função
chr(x)
retorna o caractere cujo código ASCII é x
. No padrão ASCII, 97 = ‘a’, 98 = ‘b’, … daí usar 96 + n
.Passo 3
Agora vamos ler a entrada do usuário. A ideia é digitar os números separados por espaço e transformar cada pedaço numa lista de inteiros:
entrada = input("Digite a sequência de números: ")
pedaços = entrada.split() # divide a string em substrings
mensagem_codificada = [int(x) for x in pedaços]
Aqui
split()
separa a string toda onde houver espaço, e a list comprehension converte cada substring em int
.Passo 4
Com a lista
mensagem_codificada
pronta, ficamos só de puxar o caractere certo em codigo[n]
pra cada n
e montar a mensagem final:mensagem = ""
for n in mensagem_codificada:
mensagem += codigo[n] # vai concatenando letra por letra
Explicando o loop: para cada número
n
na lista, a gente pega codigo[n]
e adiciona no final da string mensagem
.Passo 5
Por fim, é só imprimir o resultado:
print(mensagem)
Resposta
# Monta a tabela de tradução
codigo = []
for n in range(0, 27):
if n == 0:
codigo.append(' ')
else:
codigo.append(chr(96 + n))
# Lê e processa a entrada
entrada = input("Digite a sequência de números: ")
pedaços = entrada.split()
mensagem_codificada = [int(x) for x in pedaços]
# Decodifica
mensagem = ""
for n in mensagem_codificada:
mensagem += codigo[n]
# Mostra a mensagem original
print(mensagem)