Back to Freecodecamp

Step 91

curriculum/challenges/english/blocks/learn-string-manipulation-by-building-a-cipher/6555e1bfcd374e18c6be8e58.md

latest1.9 KB
Original Source

--description--

In Python, there's a way to easily format strings. f-strings enable you to interpolate values in your strings.

Interpolation means writing placeholders that will be replaced by the specified values when the program runs. For example, you can get the same result of 'Encrypted text: ' + text with f'Encrypted text: {text}'. You need to put an f before the quotes to create the f-string and write the variables or expressions you want to interpolate between curly braces.

Modify the first print() call to use an f-string.

--hints--

You should modify the print('Encrypted text: ' + text) call so that it prints the same result using an f-string.

js
({ test: () => assert.match(code, /print\s*\(\s*f("|')Encrypted\stext:\s\{\s*text\s*\}\1\s*\)/) })

--seed--

--seed-contents--

py
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)
--fcc-editable-region--
print('Encrypted text: ' + text)
print('Key: ' + custom_key)
--fcc-editable-region--
#decryption = decrypt(encryption, custom_key)
#print(decryption)