Learn-string-manipulation-by-building-a-cipher - Step 89

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
        # 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)
print(f’\nEncrypted text: {text}‘)
print(f’Key: {custom_key}’)
decryption = decrypt(text, custom_key)
print(f’Decrypted text: {decryption}')

I receive the following error even if it seems to me that the use of \n is correct:

Sorry, your code does not pass. You're getting there.

You should modify the `print(f'Encrypted text: {text}')` call adding a newline character at the beginning of the string.

Any suggestions? Thanks

Hello Lorenzo,

Your print statement looks correct, you put the newline where you are supposed to. Are you sure the single quotes in that line are correct? To make sure you can always just reset the step and just add the newline character again.

1 Like

Thank you very much! The reset worked now :wink:

1 Like