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.

Your code so far

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 */

Your browser information:

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