2016-06-09 30 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']