Loop Replace all string characters by python list character

Asked

Viewed 172 times

2

What I want to do is take a string and for each character of the string walk type 3 positions back in the alphabet and replace in the string or create a new string Ex string = 'abcd' walking 3 positions so String would be 'xyza' My idea of code is as follows:

a = 'ab cd mnopq stvux'
b = ['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']
c = ''
for i in a:
    for j in b:
        if(a[i] == b[i]):
            c = 

1 answer

1


We can use a collections.deque so we can easily create a "rotated" version of the alphabet. Then just take the position of each letter in the alphabet and apply the equivalent position in the rotated alphabet:

import collections

alfabeto = collections.deque('abcdefghijklmnopqrstuvwxyz')
alfabeto_rotacionado = alfabeto.copy()
alfabeto_rotacionado.rotate(3)

print(alfabeto)  # deque(['a', 'b', 'c', 'd', 'e', 'f', 'g' ...
print(alfabeto_rotacionado)  # deque(['x', 'y', 'z', 'a', 'b', 'c' ...

mensagem = 'ab cd mnopq stvux'
mensagem_decifrada = ''
for letra in mensagem:
    if letra in alfabeto:
        # Se for um caractere no alfabeto...

        # Pegamos sua posição no alfabeto original
        posicao_alfabeto = alfabeto.index(letra)

        # Inserimos na mensagem decifrada o caractere equivalente no 
        # alfabeto rotacionado
        mensagem_decifrada += alfabeto_rotacionado[posicao_alfabeto]
    else:
        # Se não for um caractere no alfabeto, só incluímos o mesmo caractere
        # (espaço, pontuação, dígitos, etc.)
        mensagem_decifrada += letra

print(mensagem_decifrada)  # xy za jklmn pqsru

Browser other questions tagged

You are not signed in. Login or sign up in order to post.