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