【问题标题】:What is the logic behind this string reversal?这种字符串反转背后的逻辑是什么?
【发布时间】:2019-08-21 05:39:48
【问题描述】:

以下程序正在反转字符串,但我不知道如何。

s='Marrey has a little lamb'
def reverse(s):
    str=''
    for i in s:
        str=i+str

    return str
print(reverse(s))

但是,当我写 str=str+i 时,它并没有反转。它背后的逻辑可能是什么?我是python初学者,请帮忙。

【问题讨论】:

  • 要了解发生了什么,请将迭代写在纸上。
  • 为什么不直接调试并逐步遍历循环的每个迭代,并观察 str 的值?
  • 我观察到了这些值,但没有得到逻辑。 for 循环应在 i 中一次分配一个字符,然后将其附加到“str”。但是它是如何以相反的顺序附加的呢?
  • @Pratik 它不是附加的,而是将它添加到字符串的 begining 中。
  • 好的,但是当我以正确的顺序获取值时,为什么或如何以相反的顺序?

标签: python-3.x for-loop


【解决方案1】:

你不应该使用 python 关键字作为变量 (str) 您可以通过在每次迭代后添加打印来测试它:

 s='String'
def reverse(s):
    newstring=''
    for i in s:
        newstring=i+newstring
        print(newstring)

    return newstring
print(reverse(s))

输出:

S
tS
rtS
irtS
nirtS
gnirtS
gnirtS

i+newstring 正在做的是获取每个元素并将其添加到其前一个元素的前缀,同时遍历整个字符串。

当你使用 newstring+i 时,它会在前一个元素之后添加一个元素,它是相同的,所以它不起作用。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多