2016-06-09 11 views
0

나는 비교적 경험이 없으며 C#에서 왔습니다. 문자열을 반복하고 for 루프를 사용하여 각 문자를 개별적으로 인쇄하려고합니다. (내가 정확히 기억 경우) C#에서파이썬으로 for 루프를 반복하는 법

이과 같이 기록 될 것입니다 : 내가

x = "test" 
    for i in x: 
    print(x[i]) 

입력 한 파이썬 쉘은 나를 내가를해야 함을 알려줍니다

string x = test; 
foreach(i in x) 
{ 
    print(x[i]); 
} 

그러나 파이썬에서

, 정수.

나는 실제로 내 구문 내 C# 예제에서 잘못되었다고 확신하지만, 질문에 도착 :

이 어떻게 제대로을 위해, 또는 foreach 루프 파이썬을 사용하여 문자열을 반복 할 것인가?

나는 웹을 검색해 왔으며 어떻게 든 빈 손으로 나옵니다. 이것이 어리석은 질문이라면 미안합니다.

x = 'test' 
for i, c in enumerate(x): 
    print(i, x[i], c) 
+0

'for i in x'는 'x'의 각 문자를 가져옵니다. 인덱스에 문자를 사용하고 있기 때문에'x [i] '를 사용한 인덱싱은 작동하지 않습니다. 올바르게 작동하려면 'for it in range (len (x))'로 변경하십시오. –

+0

"C#에서는 (올바르게 기억하는 경우) 이렇게 쓰여질 것입니다."- 잘못 기억합니다. [C# foreach는 인덱스가 아닌 요소로 넘어갑니다.] (https://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx), 파이썬처럼. – user2357112

+0

@ user2357112 예 이전 연습을보고 나서 깨달았습니다. –

답변

1

귀하의 변수 당신이 위치 i에 편지를받을 예정 x[i]를 입력 할 때 x은, 그러므로, 문자열 유형입니다.

루프 ( for i in x)에 대한
x = "test" 
for i in x: 
    print(x[i]) 

이 의미 :

그러나, 루프, 당신은 다른 무언가가 문자열 X의 각 문자 i에 대한 을 다음을한다. 따라서 변수 i은 실제로는 정수가 아닌 문자입니다. 당신이 정말로 정수로 당신의 i을 원하는 경우 for i in range(0, len(x))를 사용 for i in x 대신,

x = "test" 
for i in x: 
    print(i) 

을하지만 : 그래서

, 그냥 print(i)를 사용하여 문자열 x의 모든 편지를 인쇄합니다. 그리고이 경우, 원래 작성한 것을 사용하여 편지에 액세스해야합니다 ( x[i]).

x = "test" 
for i in range(0, len(x)): 
    print(x[i]) 
+0

감사! 그것은 매우 깊숙하고 내가 염려했던 모든 것을 다루었습니다. –

0

, 당신은 enumerate를 사용할 수 있습니다. for i in x의 i는 이미 색인이 아닌 문자를 참조합니다. 예를 들어,

stringx='hello world for i in stringx: print stringx[i] 를 작성하는 작성과 동일

print stringx['h'] 
0

이뿐만 아니라 이해하는 나에게 조금을했다,하지만 난 오해를 이해 생각 :

당신이 정말로 어떤 이유로 루프 인덱스를 원하는 경우
관련 문제