2014-02-08 31 views
1

我需要製作一個簡單的python腳本,但是因爲我大部分都是用PHP/C++編寫的,所以我覺得很難管理自己而不用簡單的for循環。 比方說,我有一個代碼:在Python中用於(不是foreach)循環

for(int i = 0; i < some_string_length; i++) 
{ 
//do something... 
} 

正如你可以看到它簡單地去多次,很多信我在我的字符串。當然,我可以在一段時間內做到這一點,但這有一個問題。我必須在循環之外創建一個變量,使其成爲全局變量或者在循環內部創建它,但是這個變量的值不能用在循環的參數中。

錯誤:

while(i < some_string_length) 
{ 
i = something; //declaring i for the first time 
i++; 
} 

正如你可以看到它沒有任何意義可言。那我該怎麼做?

+1

爲什麼不告訴你,你需要遍歷以及要如何使用它的實際數據? – jeremyjjbrown

+1

你可以嘗試用Python構建你自己的C風格的循環,但我真的不明白爲什麼。 – Reflection

回答

8

從其他語言

for (int i = start; i < stop; i += step) { … } 

的結構直接轉化爲一個Python for循環過range

for i in range(start, stop, step): 
    … 

默認情況下,step爲1,因此您無需爲i++指定它。 start默認爲零,所以你也可以離開了這一點,如果你有i = 0開始:所以

for i in range(stop): # the same as `for (int i = 0; i < stop; i++)` 
    … 

,如果你想在一個字符串的長度進行迭代i,你可以這樣做:

for i in range(len(my_string)): 
    … 

通常情況下,你會想,雖然訪問字符串的字符,所以你可以遍歷字符直接:

for char in my_string: 
    … 

Ø R,如果你真的需要索引,以及,你可以使用enumerate兩全:

for i, char in enumerate(my_string): 
    … 
1

嘗試:

for i in range(0,some_string_length): 
    # do something... 
5
for i, item in enumerate(some_string): 
    # i is the index, item is the actual element 

我想你會驚奇地發現你如何實際很少需要i ,但是。你最好學習如何使用Python習慣用法,而不是強迫自己用Python編寫PHP/C++代碼。

0

如果你有string s

s = "some string" 

,你可以這樣做:

for i in range(len(s)): 
    print i