Learn String Manipulation by Building a Cipher - Step 83

Tell us what’s happening:

Not sure if I’m misunderstanding but I tried to concate the message in the print statement like it asked me to but in the little hint that it gives when you get it wrong its telling me “You should change your print(encryption) call so that it prints Encrypted text: mrttaqrhknsw ih puggrur using the + operator.”

Your code so far

text = 'mrttaqrhknsw ih puggrur'
custom_key = 'python'

def vigenere(message, key, direction=1):
    key_index = 0
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    final_message = ''

    for char in message.lower():

        # Append any non-letter character to the message
        if not char.isalpha():
            final_message += char
        else:        
            # Find the right key character to encode/decode
            key_char = key[key_index % len(key)]
            key_index += 1

            # Define the offset and the encrypted/decrypted letter
            offset = alphabet.index(key_char)
            index = alphabet.find(char)
            new_index = (index + offset*direction) % len(alphabet)
            final_message += alphabet[new_index]
    
    return final_message

def encrypt(message, key):
    return vigenere(message, key)
    
def decrypt(message, key):
    return vigenere(message, key, -1)

/* User Editable Region */

encryption = encrypt(text, custom_key)
print("Encrypted text: " + encryption)
decryption = decrypt(encryption, custom_key)
print(decryption)

/* User Editable Region */

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 OPR/105.0.0.0 (Edition std-1)

Challenge Information:

Learn String Manipulation by Building a Cipher - Step 83

1 Like

Hey, for this step you are required to print Encrypted text: mrttaqrhknsw ih puggrur using concatenation, as you said. Look at the output, because you are printing something else.

But then wouldn’t I have to do print("Encrypted text: " + decryption) ? That gives me the correct output yes but it’s both not what its asking for nor does it work which is why I was confused.

Check again the output. print("Encrypted text: " + decryption) outputs Encrypted text: bpmaodgfdugj xf ibutgsk, which is different from the one required in the description of the step.

If I do this:

encryption = encrypt(text, custom_key)

print("Encrypted text: " + encryption)

decryption = decrypt(encryption, custom_key)

print("Decrypted text: " + decryption)

I get:

Encrypted text: bpmaodgfdugj xf ibutgsk
Decrypted text: mrttaqrhknsw ih puggrur

Not sure if I can send screenshots here but this is what I keep getting no matter how many times I tried resetting the code and playing around with it.

So I did

encryption = encrypt(text, custom_key)
print("Encrypted text: " + text)

and it worked but is this actually correct?

If the text itself is ‘mrttaqrhknsw ih puggrur’ shouldn’t encrypting this turn it into a different message and decrypting it turn it back into the previous message?

1 Like

you are not changing text, so text stay what it was

Thanks for sharign the solution, However it is confusing indeed,