# Learn String Manipulation by Building a Cipher - Step 69

Hi, I’m having trouble getting my code to pass:

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 = (index + offset) % len(alphabet)
new_index = offset * direction
encrypted_text += alphabet[new_index]

return encrypted_text
``````

Thank you.

1 Like

Welcome back to the forum @stickslammer

All you need to do is multiply the `offset` by the `direction` in the `new_index` assignment. The multiplication operator in Python is `*` .

Here is a comparison of the original code and your code.

The code in blue is the original code, the code in red is your code.
The code in magenta is the overlap.

For this step, you do not need to add a new line of code.
Just add the code asked for in the instructions to the existing code.

Happy coding

Hi Teller,

Thanks for your help, but it seems I’m still doing something wrong:

``````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

encrypted_text += alphabet[new_index]

return encrypted_text

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

From the overlap, two of the lines are not quite right.

The `new_index` variable is missing some code.
The `encrypted_text` variable is not correctly indented.

Happy coding

I’ve edited your code for readability. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.

You can also use the “preformatted text” tool in the editor (`</>`) to add backticks around text.

See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (').

Hi,
I’m still not getting it… should it be this hard?
<

`````` 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)
``````

One line is not indented correctly.

`new_index` code is not quite right.

do not delete anything, add in the multiplication without deleting `index`. Reset the step please and try again

1 Like

OMG! I feel sooooo stupid, lol.
I was hanging out in my living room this afternoon, listening to the birds and then all of a sudden I was like ‘DOH!’.

Thanks for being patient with me and helping me out; I really appreciate it.
Shane Tyler