curriculum/challenges/english/blocks/learn-string-manipulation-by-building-a-cipher/6553efd6ada3f42aa2d75448.md
Now you should see the output again. Although this approach works, it doesn't significantly enhance the code's reusability. Repeatedly calling your function will result in the same outcome. However, functions can be declared with parameters to introduce versatility and customization:
def function_name(param_1, param_2):
<code>
Parameters are variables that you can use inside your function. A function can be declared with different number of parameters. In the example above, param_1 and param_2 are parameters.
Modify your function declaration so that it takes two parameters called message and offset.
After that, you'll see an error appear in the terminal. You'll see how to solve it in the next steps.
Your caesar function should take message and offset as the parameters. Remember to separate the parameters with a comma.
assert.match(code, /^def\s+caesar\s*\(\s*message\s*,\s*offset\s*\)\s*:/m)
text = 'Hello Zaira'
shift = 3
--fcc-editable-region--
def caesar():
--fcc-editable-region--
alphabet = 'abcdefghijklmnopqrstuvwxyz'
encrypted_text = ''
for char in text.lower():
if char == ' ':
encrypted_text += char
else:
index = alphabet.find(char)
new_index = (index + shift) % len(alphabet)
encrypted_text += alphabet[new_index]
print('plain text:', text)
print('encrypted text:', encrypted_text)
caesar()