【问题标题】:Mirroring a string of text using Python使用 Python 镜像文本字符串
【发布时间】:2014-08-29 15:01:52
【问题描述】:

我正在尝试编写代码来镜像 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”。

【问题讨论】:

  • 什么是string(text))
  • 提示:如果你在循环中return,那么它不会继续循环。
  • 我认为应该颠倒的字符串但是我无法让它在 python 中工作
  • 错字,return 应该在外面
  • 为什么不直接使用reversed函数?

标签: python string mirror


【解决方案1】:

如果我理解正确的话:

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 则可以使用 str(text) 但 text 已经是字符串,因此无需转换。

text = text[mirrorPoint] 不断改变text 的值,所以你会得到一个index error,如果你想在循环外存储一个字符串变量,比如res = "",你可以使用res += text[i] where 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]

【讨论】:

  • 你的初始切片应该上升到mirrorPoint + 1,否则你会缩短奇数长度字符串的中间字母 - 我认为“tweet”应该返回“tweewt”。
  • 谢谢,这行得通。但是,为了将来参考,它不需要循环吗?
  • @ddbg,我只是编辑,你自己的代码有一些问题我会解释
  • 我认为 will 是正确的,但是使用 mirrorPoint + 1 在输出中添加了一个字母,使其比应有的更长
  • @ddbg 可以这样做:res = text[:mirrorPoint+len(text)%2] 然后return text[:mirrorPoint] + res[::-1]
【解决方案2】:

以下反转任何数组。

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]

【讨论】:

  • 从问题来看,他们似乎是在反映关于它的中间字符的字符串,来自mirror("abcd")"abba"
猜你喜欢
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 2015-01-03
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
相关资源
最近更新 更多