如何更改位于2倍数位置的所有字母?
我正在尝试使用字符更改 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"))
我怎样才能正确地做到这一点?
回答
字符串是不可变的,因此您需要构建一个新字符串来返回。我会使用enumerate和join:
>>> 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'