2016-06-09 2 views
0

Я относительно неопытен и исхожу из C#. Я пытаюсь выполнить итерацию строки и индивидуально распечатать каждую букву, используя цикл for.Как правильно перебирать цикл for с помощью python

В C# это будет (если я правильно помню) записывается следующим образом:

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

Но в питона, когда я печатаю

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

Питон оболочка говорит мне, что я должен быть целое число.

Я на самом деле уверен, что мой синтаксис неверен в моей C# пример, но, чтобы добраться до вопроса:

Как бы я правильно перебирать строку используя для или Еогеасп цикл в Python?

Я искал в Интернете и как-то подошел с пустыми руками. Извините, если это глупое задание.

+0

'for i in x' захватывает каждый символ в' x'. Индексирование с помощью 'x [i]' не будет работать, потому что вы используете символ для индекса. Измените его на 'для i в диапазоне (len (x))', чтобы заставить его работать правильно. –

+0

«В C# это было бы (если я правильно помню) писать так» - вы ошибаетесь. [C# foreach перебирает элементы, а не индексы] (https://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx), как и Python. – user2357112

+0

@ user2357112 Да, я понимаю теперь, посмотрев предыдущую практику, которую я сделал, спасибо –

ответ

1

Ваша переменная x строкового типа, поэтому, когда вы набираете x[i] вы собираетесь получить письмо в положении i.

Однако, в цикле, у вас есть что-то другое:

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

Этот цикл (for i in x) означает: для каждой буквы i в строке х, сделайте следующее. Итак, ваша переменная i на самом деле является буквой, а не целым числом.

Так, чтобы напечатать каждую букву строки x, просто используйте print(i):

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

Но, если вы действительно хотите, чтобы ваш i быть целым числом, а не for i in x, используйте for i in range(0, len(x)). И в этом случае вам нужно будет получить доступ к письму, используя то, что вы изначально писали (x[i]).

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

Спасибо! Это было очень сложно и охватывало все, о чем я беспокоился. –

0

Если вы действительно хотите, индекс цикла по какой-то причине, вы можете использовать enumerate:

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

Это заняло у меня немного, чтобы понять, как хорошо, но я думаю, что я понимаю, это недоразумение. I в for i in x уже относится к символу, а не к индексу. Например, написание

stringx='hello world for i in stringx: print stringx[i] такая же, как написание

print stringx['h'] 
Смежные вопросы