Learn String Manipulation by Building a Cipher - Step 47

Tell us what’s happening:

Describe your issue in detail here.

Your code so far


/* User Editable Region */

text = 'Hello Zaira'
shift = 3

def caesar():
    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]
            caesar()            
        print('plain text:', text)
        print('encrypted text:', encrypted_text)

/* 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/120.0.0.0 Safari/537.36

Challenge Information:

Learn String Manipulation by Building a Cipher - Step 47

You appear to have created this post without editing the template. Please edit your post to Tell us what’s happening in your own words.

You have called caesar() inside the loop which is recursive call causing it to repeatedly call itself for each character in the text, resulting in an infinite loop and a stack overflow error. Take caesar() function from inside else and put it outside for loop. Also call caesar() function one time outside the function.

Another issue is the indentation error. You have typed print inside for loop. Make it outside loop.

Make both print and caesar() outside for loop but inside function.