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

Hi @stickslammer

I moved your question to its own topic because you were asking a question related to your own code for a challenge and were not answering the OP of the other thread. It is always best to create your own thread for your specific question(s). Also, it is advisable to use the Ask for Help button on the challenge, so it auto-populates with your current code and the challenge url.

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)

Hi @stickslammer

image

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)

Hi @stickslammer

image

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