Learn String Manipulation by Building a Cipher - Step 71

Tell us what’s happening:

I am having a hard time with Step 71.
This code won’t pass,can any one please assist

new_index = (offset * direction) % len(alphabet)

Your code so far

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)

# User Editable Region

            new_index = (offset * direction) % len(alphabet)

# User Editable Region

            encrypted_text += alphabet[new_index]
    
    return encrypted_text
    
#encryption = vigenere(text, custom_key)
#print(encryption)

Your browser information:

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

Challenge Information:

Learn String Manipulation by Building a Cipher - Step 71

reset the step, add the multiplication without deleting anything

It is still showing an error

  1. Change new_index = (offset * direction) % len(alphabet) to code removed by moderator since the new index should consider the current character index and the offset.
  2. Ensure the vigenere function is called with the correct parameters (message, key, direction).

hey @paxan24

It is great that you solved the challenge, but instead of posting your full working solution, it is best to stay focused on answering the original poster’s question(s) and help guide them with hints and suggestions to solve their own issues with the challenge.

We are trying to cut back on the number of spoiler solutions found on the forum and instead focus on helping other campers with their questions and definitely not posting full working solutions.

Please update the message to include your code. It looks like you forgot to include it to show us what you have written.

When you enter a code, 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 (').

I changed my code to this solution because the other ways did not work.

 new_index = direction * (index + offset) % len(alphabet)

multiply the offset by the direction

You are multipying (index + offset) by direction

Just multiply the offset. If you need to review the math order of operations:
https://www.onlinemathlearning.com/bedmas.html

1 Like

Thank you. It worked, I think I found the instruction slightly confusing.

1 Like

lol… All solutions given didn’t work for me until you mentioned that you read the instructions wrongly. I guess we focus too much on the big problem and ignore the simple things. Thank You!