字符串镜像功能

时间:2014-08-01 20:53:13

标签: python

我想编写一个镜像字符串的函数,而不使用任何内置函数,只使用loop

例如,wordMirror("stackexchange")会返回'stackexchangeegnahcxekcats'

我使用以前问题中的一些提示编写了以下代码:

def wordMirror(word):
    c = ""
    for x in word:
        c = c + x
    return word + c

但它没有用。然后我开始玩它并将c = c + x转换为c = x + c,它神奇地起作用。

切换变量时,代码读取到底是什么?

3 个答案:

答案 0 :(得分:5)

没有关于它的 magic ,因为您在之前插入c ,因此您向x添加字符的顺序会被撤消先前在c

中的内容

你应该亲自动手:

iteration  |   x   |    c 
-------------------------------
0             ''       ''
1              s        s
2              t        ts 
3              a        ats
4              c        cats
5              k        kcats
6              e        ekcats
7              x        xekcats
8              c        cxekcats
9              h        hcxekcats
10             a        ahcxekcats
11             n        nahcxekcats
12             g        gnahcxekcats
13             e        egnahcxekcats

从这个简单的表中,你应该能够看到字符串是如何增长的。学习如何手动执行程序是至关重要的技能。

答案 1 :(得分:4)

一次一步地执行代码有助于我们理解它。

c = c + x

在这种情况下,请说c = "stackexchange"。您将逐个查看这些字母,每个字母都会进入x

# x = "s"
c = c + x    # c = "" + "s" = "s"
# x = "t"
c = c + x    # c = "s" + "t" = "st"
# x = "a"
c = c + x    # c = "st" + "a" = "sta"

现在让我们尝试另一种方式。

# x = "s"
c = x + c    # c = "s" + "" = "s"
# x = "t"
c = x + c    # c = "t" + "s" = "ts"
# x = "a"
c = x + c    # c = "a" + "ts" = "ats"

希望能够明确为什么添加顺序可以帮助您获得结果。当你试图弄清楚为什么代码按照它的方式工作时,慢慢地逐步执行代码会更清楚地向你显示代码的发生。您可以通过1)找到一个好的IDE,或2)在战略位置添加print语句来做到这一点。尝试在print x, c之后立即添加c = x + c行,并且您会一次看到它被构建一个字母。

答案 2 :(得分:2)

我知道你正在寻找循环,但为什么不呢:

c = "hello"
output = c + c[::-1]
print output
#=> 'helloolleh'

这会将您的字符串c(您可以将其视为一个字符数组)并反向逐步执行(slicing符号的最后一个参数中的-1执行此操作)。这样,它允许您轻松连接起始字符串及其镜像版本。

许多python开发人员认为简单比复杂更好。这种技巧可以增加您和其他开发人员理解和维护您生成的代码的便利性。