我试图使我的程序返回完全相同的字符串,但每个字符之间使用**
。这是我的代码。
def separate(st):
total = " "
n = len(st + st[-1])
for i in range(n):
total = str(total) + str(i) + str("**")
return total
x = separate("12abc3")
print(x)
这应该返回:
1**2**a**b**c**3**
但是,我得到0**1**2**3**4**5**6**
。
答案 0 :(得分:4)
您可以将字符串中的字符与"**"
一起用作分隔符(这是有效的,因为字符串基本上是Python中的列表)。要最后获得额外的"**"
,只需串联即可。
这是一个例子:
def separate(st):
return "**".join(st) + "**"
示例:
x = separate("12abc3")
print(x) # "1**2**a**b**c**3**"
关于您发布的代码的注释:
获得输出的原因是因为您使用for i in range(n):
进行了循环,因此迭代变量i
将成为st
中的每个索引。然后,当您调用str(total) + str(i) + str("**")
时,将i
转换为字符串,而i
只是{{1}中的每个索引(从0
到n-1
) }。
要解决此问题,您可以直接遍历st
中的字符,如下所示:
st
或使用索引for c in st:
来获取i
中每个位置的字符,如下所示:
st
答案 1 :(得分:0)
欢迎使用StackOverflow!
我将逐行解释您的部分代码。
for i in range(n)
,因为您仅提供1个参数(用于停止点),所以将从n = 0、1、2,...,n-1开始循环
total = str(total) + str(i) + str("**")
,将i
(当前的迭代次数-1)和**
添加到当前的total
字符串中。因此,它将这些数字顺序地添加到结果中。
您应该做的是total = str(total) + st[i] + str("**")
,以便它将st
的每个字符一个一个地添加
此外,您可以将n
初始化为n = len(st)