2014-08-29 6 views
0

파이썬에서 문자열을 미러링하는 코드를 작성하려고합니다. 나는 이미지 나 사운드를 미러링하는 것과 비슷하다고 생각했지만 루프를 지나칠 수는 없습니다. 입력과 출력은 모두 문자열이어야합니다.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

무엇이'string (text)? '입니까? –

+1

힌트 : 루프 안에서 '돌아 가기'를 반복하면 루핑이 계속되지 않습니다. – Kevin

+0

string 역전되어야한다고 생각하지만 파이썬 내에서 작동하도록 할 수는 없습니다. – ddbg

답변

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') 

가 : range가 정수를 필요로 작동하지 않습니다 범위에 전달하면

mirrorPoint = (len(text)/2) 그렇게 부동 될 것입니다.

''.join(string(text))str으로 전송하려는 경우 str(text)을 사용하지만 텍스트는 이미 문자열이므로 전송할 필요가 없습니다.

text = text[mirrorPoint]

당신이, 당신이 다음 text[i] 당신이

을 추가 할 각 문자가 res += text[i]을 사용할 수 res = "" 같은 루프 외부의 문자열 변수를 저장하기를 원한다면 그래서 당신은, index error을 얻을 것이다 text의 값을 변경 유지

01 : 문자열이 홀수 길이의 경우 우리가 mirror_point1를 추가 할 필요가 고르지 길이 문자열을 처리하기 위해

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

: 자신의 코드를 사용하여

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] 
+0

당신은 최초의 슬라이스가'mirrorPoint + 1'까지 올라가거나 이상한 길이의 문자열의 중간 문자를 없앨 것입니다 - "tweet"는 "tweewt"를 리턴해야합니다. – will

+0

고맙습니다. 그러나 나중에 참조 할 때 루프가 필요하지 않습니까? – ddbg

+0

@ddbg, 난 그냥 편집 오전 자신의 코드와 함께 몇 가지 문제가 있습니다 –

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] 
+0

질문에서 'mirror'("abcd")''abba '' – will

+0

감사합니다.에서 중간 문자열에 관한 문자열을 미러링하는 것을 의미하는 것 같습니다. –