Learn String Manipulation by Building a Cipher - Step 84

Tell us what’s happening:

I seriously have no idea what is wrong with my code?

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

    encryption = vigenere(text, custom_key)
    print(encryption)
    decryption = vigenere(encryption, custom_key, -1)
    print(decryption)
    print(vigenere(message,key))

# 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/128.0.0.0 Safari/537.36 Edg/128.0.0.0

Challenge Information:

Learn String Manipulation by Building a Cipher - Step 84

Please Tell us what’s happening in your own words.

Learning to describe problems is hard, but it is an important part of learning how to code.

Also, the more you say, the more we can help!

1 Like

the issue is that you are not returning anything in the encrypt function

Do you get any hints or errors?

Delete the pass keyword, and return vigenere(message, key) from your new function.

Did you do changes that are not in the instructions?

I would reset this and try again.

the problem is that I don’t get the hints, I then even tried

def encrypt():
    print(vigenere(message=text,key=custom_key))    

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

but it didn’t work, all I understood was to delete pass, which I already did a long time ago.
At this point I’m just staring at the computer trying random changes

The instructions say exactly what to do

Delete the pass keyword, and return vigenere(message, key) from your new function.

which part of the instructions are giving you issues?

Isn’t that what I just did?

are you returning from the function?

What do you mean by returning from the function?

do you know what that means? its part of the instructions

the only instructions I’m getting is this, “Your encrypt function should return vigenere(message, key). Remember to delete pass”

does return mean print?
Sorry but I’m still new to this Python coding, as you see it’s my first python project

notice how it say “should return”
no, return does not mean print, return means return, it’s an important part of functions, and it was introduced in step 67, you may want to go back there and review

OH, yeah I remembered the return function, but when I tried typing in this,
def encrypt(message,key):
vigenere(message,key)
return encrypt(text,custom_key)
it said “Your code raised an error before any tests could run”

read again the instructions, it say exactly what to return

Ah, never mind, it turns out I accidentally wrote encrypt() at the very bottom of the code, then I tried this,
def encrypt():
vigenere(message,key)
return vigenere(message,key)
and it worked. Tysm for ur help, I couldn’t have done it without you :star_struck:

you have an extra function call there, it doesn’t do anything bad, but it also doesn’t do anything

don’t worry, when I jump off to the next level it will just auto correct it

But what is the extra function anyways?

here you have a call to vigenere before the return statement, that one is useless