Python 如何更改处于2的倍数位置的所有字母?
我试图用字符Python 如何更改处于2的倍数位置的所有字母?,python,string,Python,String,我试图用字符*更改2的倍数的字符/字母的位置。但是,当我尝试运行它时,会收到一条错误消息 “str”对象不支持项分配 def猜测(x): i=0 而i
*
更改2的倍数的字符/字母的位置。但是,当我尝试运行它时,会收到一条错误消息
“str”对象不支持项分配
def猜测(x):
i=0
而i
如何正确执行此操作?如错误消息中所述,字符串对象不支持列表和字典等项分配。我建议对代码使用
replace()
函数,或者将x
更改为列表,然后再更改为字符串。如错误消息中所述,字符串对象不支持列表和字典之类的项分配。我建议对代码使用replace()
函数,或者将x
更改为一个列表,然后再更改为一个字符串。字符串是不可变的,因此您需要构建一个新字符串来返回。我会使用枚举
和加入
:
>>> 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'
字符串是不可变的,因此您需要构建一个新字符串来返回。我会使用
枚举
和加入
:
>>> 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'
这回答了你的问题吗?除了下面Samwise的答案之外,还值得强调他们的方法与您自己的方法之间的差异。使用
enumerate(x)
构造for循环是遍历字符串、返回索引和字符值的好方法,而不是设置笨拙的while循环并必须创建一个计数器来遍历它。这是否回答了您的问题?除了下面Samwise的答案之外,还值得强调他们的方法与您自己的方法之间的差异。使用enumerate(x)
构造for循环是一种遍历字符串、返回索引和字符值的好方法,而不是设置一个笨拙的while循环并创建一个计数器来遍历它。replace
按值替换字符,而不是按位置。是的,我知道你想做什么了。Samwise的代码可以正常工作。正如我所说,您还可以将x
更改为列表,因为列表支持项目分配。然后使用return''返回x。加入(x)
。我也不知道为什么要使用while循环,因为for循环更容易。replace
按值而不是按位置替换字符。是的,我知道你想做什么。Samwise的代码可以正常工作。正如我所说,您还可以将x
更改为列表,因为列表支持项目分配。然后使用return''返回x。加入(x)
。我也不知道为什么要使用while循环,因为for循环更容易。