如何更改位于 2 倍数位置的所有字母?

Jak*_*ake 1 python string

我正在尝试使用字符更改 2 的倍数的字符/字母的位置*。但是,当我尝试运行它时,我收到一条错误消息

“str”对象不支持项目分配

def guess(x):
    i = 0
    while i < len(x):
        if i % 2 == 0:
            x[i] = "*"
            i = i + 1
    return x
    print(guess("today is a beautiful day"))
Run Code Online (Sandbox Code Playgroud)

我怎样才能正确地做到这一点?

Sam*_*ord 5

字符串是不可变的,因此您需要构建一个新字符串来返回。我会使用enumeratejoin

>>> def guess(x):
...     return ''.join(c if i % 2 else '*' for i, c in enumerate(x))
...
>>> guess("today is a beautiful day")
'*o*a* *s*a*b*a*t*f*l*d*y'
Run Code Online (Sandbox Code Playgroud)