2013-08-19 2 views
5

내 프로그램이 임의로 문자를 건너 뛰고 있습니다!단어 반전을위한 프로그램이 문자를 임의로 건너 뛰는가?

def reverse(text): 
    length = len(text) 
    reversed_text = [] 
    for i in range(0,length + 1): 
     reversed_text += [''] 
    original_list = [] 
    for l in text: 
     original_list.append(l) 
     new_place = length - (original_list.index(l)) 
     reversed_text[new_place] = l 
    return "".join(reversed_text) 
+3

문자열을 뒤집는 데 매우 복잡한 방법입니다. '텍스트 [:: - 1]'트릭을 할 것입니다. – Ben

+1

너무 무작위가 아닙니다. 그것은 반복 된 글자에 있습니다 ... 당신은 색인을 사용하고 있습니다 ... – MakeCents

+1

왜 내가 이것을 실행하면, 그것은'yrtsloc'이 아니라'yrotsloc'입니다. 설명이 잘못 되었습니까? 아니면 실제 코드가 아닙니다. – abarnert

답변

2

이 중복 문자 때문에이 때 발생하는

def reverse(text): 
    return text[::-1] 
7

을 시도해보십시오 예를 들어, 'coolstory는'yrotsloc '와'최고 '가됩니다 여기에

코드는'mosewa '이된다

original_list.index(l) 

은 항상 동일한 l에 대해 동일한 값을 반환합니다. 따라서 new_place은 같은 위치에있는 두 글자가 동일합니다. 또한 reversed()을 사용할 수 있습니다

>>> s = "hello" 
>>> s[::-1] 
'olleh' 

,하지만 그건 reversed object (안 문자열)을 반환 파이썬에서 문자열을 반대하는

한 일반적인 방법은 슬라이스로한다. 문자열을 역순으로 반복하려는 경우이 옵션을 사용하는 것이 더 좋습니다.

>>> for c in reversed(s): 
...  print c 
... 
o 
l 
l 
e 
h 
+0

이것은 확실히 오류 일 것 같지만 질문에 주어진 예제를 설명하는 방법을 볼 수 없습니까? –

+0

@JackAidley,'reversed_text [new_place] = l'은 같은 문자로 기존 위치를 설정합니다 – leon

+0

그렇다면'coolstory'에서'yrotsloc'을 어떻게 생성합니까? –

관련 문제