在 for 循环中,字符不会连接到空字符串变量

问题描述 投票:0回答:2
inp='peter piper picked a peck of pickled peppers.'
mod_str=""
for char in range(-1,-(len(inp)+1)):
    mod_str+=inp[char]

print(mod_str)

代码给出一个空字符串作为输出,我认为字符没有连接到 for 循环内的空字符串,你能告诉我如何解决这个问题吗?

我期望输出是这样的:

'.sreppep delkcip fo kcep a dekcip revip retep'

我尝试将右侧第一个负索引中的字符附加到字符串的长度以获取输出。由于 range 给出的数字不包括停止值,因此我在长度值上添加了 +1,以将其作为 range 函数的停止值(因为字符串的负索引号范围从 -1 到 -(字符串的长度)) .

python-3.x string concatenation
2个回答
0
投票

请阅读 范围() 文档。

如果

n
是长度加一, 你给了它三个论点:

    range(-1, -n, 1)

你想要:

    range(-1, -n, -1)

这样它就会向下而不是向上计数。


更准确地说,您指定(默认情况下)

step
+1
,因此
for
循环执行零次。 您希望
step
成为
-1
以便向下计数 从
-1
到负长度。


0
投票

python中的range函数实际上需要三个参数

其定义可参考如下:

def range(start, end, step=1)

如果您希望范围在您指定的域中向后退一步,您应该提供 -1 步,以便修改后的代码如下所示:

inp = 'peter piper picked a peck of pickled peppers.'
mod_str = ""
for char in range(-1, -(len(inp)+1), -1):
    mod_str += inp[char]

print(mod_str)

你也可以使用切片来反转字符串,类似于范围:

inp = 'peter piper picked a peck of pickled peppers.'
mod_str = inp[::-1]
print(mod_str)
© www.soinside.com 2019 - 2024. All rights reserved.