Could you help me narrow the code?

Asked

Viewed 56 times

-1

python encrypting, could help me decrease the code?

def criptografar(frase):
    tradutor = ""
    for letra in frase:
        if letra in "Aa":
            tradutor = tradutor + "@"
        elif letra in "Bb":
            tradutor = tradutor + "#"
        elif letra in "Cc":
            tradutor = tradutor + "!"
        elif letra in "Dd":
            tradutor = tradutor + "$"
        elif letra in "Ee":
            tradutor = tradutor + "%"
        elif letra in "Ff":
            tradutor = tradutor + "&"
        elif letra in "Gg":
            tradutor = tradutor + "1"
        elif letra in "Hh":
            tradutor = tradutor + "2"
        elif letra in "Ii":
            tradutor = tradutor + "3"
        elif letra in "Jj":
            tradutor = tradutor + "4"
        elif letra in "Kk":
            tradutor = tradutor + "5"
        elif letra in "Ll":
            tradutor = tradutor + "6"
        elif letra in "Ii":
            tradutor = tradutor + "6"
        elif letra in "Mm":
            tradutor = tradutor + "7"
        elif letra in "Nn":
            tradutor = tradutor + "8"
        elif letra in "Oo":
            tradutor = tradutor + "9"
        elif letra in "Pp":
            tradutor = tradutor + "0"
        elif letra in "Qq":
            tradutor = tradutor + "#"
        elif letra in "Rr":
            tradutor = tradutor + "#"
        elif letra in "Ss":
            tradutor = tradutor + "#"
        elif letra in "Tt":
            tradutor = tradutor + "#"
        elif letra in "Ww":
            tradutor = tradutor + "#"
        elif letra in "Xx":
            tradutor = tradutor + "#"
        elif letra in "Hh":
            tradutor = tradutor + "#"
        elif letra in "Yy":
            tradutor = tradutor + "#"
        elif letra in "Zz":
            tradutor = tradutor + "#"
        else:
            tradutor = tradutor + letra
    return tradutor 
print(criptografar(input("Digite o texto a ser Criptografado ")))
  • 2

    Why is it twice the H and never the U?

1 answer

2

You can create a dictionary in which the keys are the input characters and the value are the characters for which you want to "encrypt". Using the dict with zip the code becomes quite simple:

def criptografar(entrada):
    antes = 'abcdefghijklmnopqrstwxuyz'
    depois = '@#!$%&1234567890#########'

    tabela = dict(zip(antes, depois))

    return ''.join(tabela.get(letra.lower(), letra) for letra in entrada)

Browser other questions tagged

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