2016-06-09 90 views
0

我相对缺乏经验并且来自c#。我试图遍历一个字符串,并使用for循环单独打印每个字母。如何正确地遍历python的for循环

在C#这会(如果我没记错的话)写像这样:

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

但是在Python,当我输入

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

蟒蛇壳告诉我,我一定是一个整数。

其实我敢肯定,我的语法不正确,在我的C#示例,但要获得这样一个问题:

我将如何正确通过字符串使用的,或在Python foreach循环迭代?

我一直在寻找网络,不知何故空手而归。对不起,如果这是一个愚蠢的调查。

+0

'for i in x'抓住'x'中的每个字符。使用'x [i]'索引不起作用,因为您正在使用字符作为索引。将其更改为'for in in range(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循环(for i in x)表示:在串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

这花了我有点明白为好,但我想我明白了误解。 for i in x中的i已经指向字符,而不是索引。例如,写

stringx='hello world for i in stringx: print stringx[i] 是一样的书写

print stringx['h']