Tell us what’s happening:
Not sure if I’m misunderstanding but I tried to concate the message in the print statement like it asked me to but in the little hint that it gives when you get it wrong its telling me “You should change your print(encryption)
call so that it prints Encrypted text: mrttaqrhknsw ih puggrur
using the +
operator.”
Your code so far
text = 'mrttaqrhknsw ih puggrur'
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
def encrypt(message, key):
return vigenere(message, key)
def decrypt(message, key):
return vigenere(message, key, -1)
/* User Editable Region */
encryption = encrypt(text, custom_key)
print("Encrypted text: " + encryption)
decryption = decrypt(encryption, custom_key)
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/119.0.0.0 Safari/537.36 OPR/105.0.0.0 (Edition std-1)
Challenge Information:
Learn String Manipulation by Building a Cipher - Step 83