2013-12-15 4 views
2

그것은 사용자가 입력 한 문자열을 뒤집는 루프이며 역순으로 문자를 읽고 문장에 넣습니다. 문제는 예를 들어 사용자의 입력이 안녕하세요, 코드의 마지막 줄에있는 쉼표 (,)가 출력을 0으로 만들지 만 거기에 쉼표가 없으면 출력에 각 문자가 한 줄로 표시됩니다. (+) 나던 작업을 연결하면 오류가 발생합니다. 나는 출력을 olleh 대신 o l l e h하는 것이 무엇이겠습니까?for 루프에서 연결하기

phrase = raw_input("Enter a phrase to reverse: ") 
end = (len(phrase))-1 
for index in range (end,-1,-1): 
    print phrase[index], 
+7

당신을 위해를 사용하는 _have_ 마십시오 사용하여 문자열로 다시 변환해야한다는 의미, 당신이 그것을 통과 반복자의 반대 반복자를 반환하는 것 이거 닦으 라구? 'phrase [:: - 1]' – iCodez

+0

@iCodez 질문에 "for-loop"와 "reverse string"을 볼 때마다, 나는 항상 숙제로 간주한다. "while-loop"또는 "palindrome"에 대해서도 동일합니다. – SethMMorton

+0

@iCodez 아마도 모든 CS 교수가 C/C++를 더 잘 알고 있기 때문에 파이썬을 "서비스"클래스로 가르치기 때문에 관용적 인 파이썬을 배울 필요가 없습니다. 그들은 아마도 C++을 가르치는 방식으로 가르치고있을뿐입니다. 그것은 또한 왜 우리가 파이썬에서 setter/getter를 사용하여 많은 질문을하는지 설명 할 것입니다. – SethMMorton

답변

1

뭔가를 연결하면, 당신은 문자열을 연결해야합니다. 영형. 당신이 for 루프 내에서 여러 번 액세스 할 수 있도록이 경우, 다음과 같이 루프의 외부에서 정의되는 변수가 필요합니다 : 당신은 또한 단순히 파이썬에서 문자열을 되돌릴 수

phrase = raw_input("Enter a phrase to reverse: ") 
end = (len(phrase))-1 
mystr = "" 
for index in range (end,-1,-1): 
    mystr += phrase[index] 
print mystr 

주 이렇게하면 :

reversedstr = mystr[::-1] 

문자열을 뒤집을 때 세 번째 연산자를 사용하는 것은 기술적으로 문자열 분할입니다.

또 다른 가능성은

reversedstr = ''.join(reversed(mystr)) 

reversed 당신이 ''.join

+0

정말 고마워요. –

2

방법에 대해 :

print phrase[::-1] # this prints the string in reverse 

또한이 :

string = '' 
for i in range(end, -1, -1): 
    string += phrase[i] 

print string 

그러나, for 루프없이 쉽게 청소 방법입니다으로

#As dougal pointed out below this is a better join 
print ''.join(reversed(phrase)) 
#but this works too... 
print ''.join(phrase[i] for i in range(end, -1, -1)) # joins letters in phrase together from back to front 
+1

세 번째 방법과 동등한 작업을 수행하는 더 좋은 방법은'' '.join (reversed (phrase))'입니다. 그렇지만'phrase [:: - 1]'은 여전히 ​​최선의 방법입니다. – Dougal