代码之家  ›  专栏  ›  技术社区  ›  Taniya Pal

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

  •  0
  • Taniya Pal  · 技术社区  · 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循环中没有连接到空字符串,你能告诉我如何解决这个问题吗?

    我预计输出是这样的:

    '.srepep delkcip for kcep a dekcip repip retep'

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

    2 回复  |  直到 2 年前
        1
  •  0
  •   X-_-FARZA_ D-_-X    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)
    
        2
  •  0
  •   J_H    2 年前

    请阅读 range() 文档

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

        range(-1, -n, 1)
    

    您想要:

        range(-1, -n, -1)
    

    那样就算数了 向下 而不是向上。


    更确切地说,您指定了(默认情况下) 一 step 属于 +1 ,所以 for 循环执行了零次。 你想要 将来 -1 以便向下计数 从…起 -1 至负长度。


    如果你使用 reversed( ... )