Learn String Manipulation by Building a Cipher - Step 61

Tell us what’s happening:

The task is the following:

Step 61

Next, inside the else block, declare a variable called key_char and assign it the value of key at the index key_index mod(%) the length of key.

and I added the following expression:
key_char = key[key_index] % key.len
I also tried key[key_index % key.len]
but neither works, can you please help me?

Your code so far


text = 'Hello Zaira'
custom_key = 'python'

def vigenere(message, key):
    key_index = 0
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    encrypted_text = ''

    for char in message.lower():

# User Editable Region

        # Append space to the message
        if char == ' ':
            encrypted_text += char
        else:key_char = key[key_index] % key.len

# User Editable Region

            index = alphabet.find(char)
            new_index = (index + offset) % len(alphabet)
            encrypted_text += alphabet[new_index]
    print('plain text:', message)
    print('encrypted text:', encrypted_text)

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 61

This is close but that is not the way to find the length of key - I suggest you google how to find the length - that way you will get used to using google (which is a programmer’s best friend :slight_smile: )

Okay i see the mistake, but when i tried with the right syntax, still cant proceed
neither with nor without paranthesis
else:key_char = key[key_index % len(key)]
else:key_char = key[(key_index) % len(key)]

just dont get what is wrong

tried also this one:
key_char = key[key_index] % len(key)

1 Like

You should go to a new line after the else:
Also, don’t leave any white space after the colon.

1 Like

well many thanks, that was the issue

1 Like