返回原始字符串,每个字符之间带有符号

时间:2018-11-01 01:28:16

标签: python

我试图使我的程序返回完全相同的字符串,但每个字符之间使用**。这是我的代码。

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**

2 个答案:

答案 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}中的每个索引(从0n-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)