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

In a for loop, characters are not getting concatenated to an empty string variable

提问人:Taniya Pal 提问时间:9/19/2023 最后编辑:Taniya Pal 更新时间:9/19/2023 访问量:27

问:

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 repip retep'

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

python-3.x 字符串 连接

评论


答:

0赞 J_H 9/19/2023 #1

请阅读 range() 文档。

如果是长度加一, 你给了它这三个参数,(开始、停止、步骤):n

    range(-1, -n, 1)

您需要:

    range(-1, -n, -1)

这样它就会倒计时而不是倒计时


更准确地说,您指定了(默认情况下) a 的 ,因此循环执行的次数为零。 你想为了往下倒数 从到负长度。step+1forstep-1-1


如果您使用 reversed( ... ),您的意图会更清晰。

0赞 X-_-FARZA_ D-_-X 9/19/2023 #2

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

其定义可参考如下:

def range(start, end, step=1)

如果希望 Range 在指定的域中向后执行,则应提供 -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)

您还可以使用切片来反转类似于 Range 的字符串:

inp = 'peter piper picked a peck of pickled peppers.'
mod_str = inp[::-1]
print(mod_str)

评论

0赞 X-_-FARZA_ D-_-X 9/19/2023
它也可以写成 mod_str = “”.join([x for x in reversed(inp)])
1赞 Taniya Pal 9/19/2023
好的,谢谢!:)