# Learn String Manipulation by Building a Cipher - Step 81

### Tell us what’s happening:

Describe your issue in detail here.
I believe there is a bug with the program, as it’s in beta, it’s telling me " Your `encryption` variable should have the value of `encrypt(text, custom_key)` .", but if you look at my code it clearly does.

``````text = 'Hello Zaira!'
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

/* User Editable Region */

def encrypt(message, key):
return vigenere(message, key)

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

encryption = encrypt(text, custom_key)
print(encryption)
decryption = decrypt(encryption, custom_key, -1)
print(decryption)

/* User Editable Region */

``````

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36`

### Challenge Information:

Learn String Manipulation by Building a Cipher - Step 81

1 Like

I have been able to pass this with the code below. I believe it might be throwing an error since you are calling the decrypt function with three arguments but it should only take two, vigenere is the one that can take three and you already passed it into decrypt.

``````def encrypt(message, key):
return vigenere(message, key)

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

encryption = encrypt(text, custom_key)
print(encryption)
decryption = decrypt(encryption, custom_key)
print(decryption)
``````

But still I understand your confusion since it mentions encryption function on the error message.

5 Likes

Thanks for submitting this.

`encryption` looks good, how about `decryption`?

Enable the console. I got this error with your code:

``````// running tests
Your encryption variable should have the value of encrypt(text, custom_key).
Your decryption variable should have the value of decrypt(encryption, custom_key).
// tests completed
``````

decrypt seems to only take 2 arguments

2 Likes

Thank you, I had the same problem

-1 does not need to be in the return function.

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

1 Like