Learn String Manipulation by Building a Cypher - Step 71

Not sure what I’m doing wrong here, tried a few different ways but nothing works.

text = ‘Hello Zaira’
custom_key = ‘python’

def vigenere(message, key, direction):
key_index = 0
alphabet = ‘abcdefghijklmnopqrstuvwxyz’
encrypted_text = ‘’

for char in message.lower():

    # Append space to the message
    if char == ' ':
        encrypted_text += char
    else:        
        # Find the right key character to encode
        key_char = key[key_index % len(key)]
        key_index += 1

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

return encrypted_text

#encryption = vigenere(text, custom_key)
#print(encryption)

Welcome to the forum @jbone1159

Where did index go?

Happy coding

Mod Edit: SOLUTION REMOVED

  • Instead of multiplying by the offset, we add/subtract it
  • Use direction=1 for encryption, direction=-1 for decryption
  • Each letter shifts based on the position of the corresponding key letter

It is great that you solved the challenge, but instead of posting your full working solution, it is best to stay focused on answering the original poster’s question(s) and help guide them with hints and suggestions to solve their own issues with the challenge.

We are trying to cut back on the number of spoiler solutions found on the forum and instead focus on helping other campers with their questions and definitely not posting full working solutions.

I think I confused myself or misunderstood the question, lol. I added index back in and it worked! Thank you