Replace every nth letter in a string

python, replace

Solution

One-liner:

newstring = ''.join("*" if i % n == 0 else char for i, char in enumerate(string, 1))

Expanded:

def replace_n(string, n, first=0):
    letters = (
        # i % n == 0 means this letter should be replaced
        "*" if i % n == 0 else char

        # iterate index/value pairs
        for i, char in enumerate(string, -first)
    )
    return ''.join(letters)
>>> replace_n("hello world", 4)
'*ell* wo*ld'
>>> replace_n("hello world", 4, first=-1)
'hel*o w*orl*'

Problem

I'm writing a function to replace every n-th letter from a string ``` def replaceN(str, n): for i in range(len(str)): n=str[i] newStr=str.replace(n, "*") return newStr ``` but when i execute it, only the first letter is replaced with a *. I'm sure there is a mistake, but i can't see it.

Original source