使用Python镜像一串文本

时间:2014-08-29 15:01:52

标签: python string mirror

我正在尝试编写代码来镜像python中的字符串。我认为它类似于镜像图像或声音,但我无法通过循环。输入和输出都应该是一个字符串。

def mirror(text):
  mirrorPoint=(len(text)/2)
  for i in range(0,mirrorPoint):
    text=text[mirrorPoint]
  return text+''.join(string(text))
print mirror('text')

我不确定这是否正确,但它会在第二行到最后一行文本中被捕获。

如果输入是' abcd'输出应该产生' abba'。

2 个答案:

答案 0 :(得分:2)

如果我理解正确的话:

def mirror(text):
    mirror_point = int(len(text)/2)
    res = text[:mirror_point] # Get Slice of Text
    return res + res[::-1] # Add Slice Plus Reverse of the Slice
print mirror( 'abcd')

在你的代码中:

mirrorPoint = (len(text)/2)将是一个浮点数,因此当传递到范围时,它将无效,因为range需要一个整数。

''.join(string(text)),如果您要转换为str(text),则会使用str,但文字已经是字符串,因此无需投射。

text = text[mirrorPoint]不断更改text的值,因此您将获得index error,如果您想将字符串变量存储在循环之外,如res = "",则可以使用res += text[i],其中text[i]是您要添加的每个字符

使用您自己的代码:

def mirror(text):
    res = ""
    mirrorPoint = int(len(text)/2)
    for i in range(mirrorPoint):
        res += text[i]
    return text[:mirrorPoint] + res[::-1]

要处理不均匀长度的字符串,如果字符串是奇数长度,我们需要将1添加到mirror_point

def mirror(text):
    mirror_point = int(len(text) / 2)
    if mirror_point % 2 == 0:
        res = text[:mirror_point]
    else:
        res = text[:mirror_point+1]
    return res + res[::-1]

答案 1 :(得分:0)

以下内容可以反转任何数组。

any_string[::-1]

所以使用这个,下面将得到字符串的中间点,获取字符串的前半部分,然后将字符串的相同一半连接起来。

my_string       = "hello"
middle_point    = int(len(my_string/2)) 
mirror_string   = my_string[0:middle_point]+my_string[0:middle_point][::-1]