2017-05-01 57 views
-3

我想以特定的方式遍歷一個字符串,但遇到一些問題,並感到困惑。如何迭代字符串中的字符?

input = "abcdefghijkl" 

def iterate_chars(word): 
    for i in range(len(word)): 
     sliced = word[:i] 
     print(i) 
     print(result) 

但在這段代碼i打印0,因此沒有打印結果。 如果我嘗試遍歷for i in word,我得到的切片以下:

TypeError: slice indices must be integers or None or have an __index__ method 

我需要的是對PROGRAMM通過字符開始在[2]位置遍歷給定的字符串的字符。所以輸出將是這樣的:

ab 
abc 
abcd 
abcde 
abcdef 
etc. 

我也試過這樣:

for i in range(2, len(word), 1) # prints nothing, doesn't start loop 
for i in range(0, len(word), 1) # prints 0 for i 

任何人有一個想法?

回答

3

範圍返回值減去比它的最終值。

如果我理解你正在嘗試做正確,這樣做的伎倆:

for i in range(2, len(word)+1): 
    print(word[:i]) 

如果字是"foobar",這將打印:

fo 
foo 
foob 
fooba 
foobar 
1

你很近,只是再看看你的range需要迭代。從第二個位置開始,並閱讀其餘部分。

def iterate_chars(word): 
    for i in range(2, len(word)+1): 
     sliced = word[:i] 
     print(sliced) 
+3

'range'還與一個參數,*結束*。 *在這種情況下,開始*默認爲0。 – mkrieger1

+0

是的,謝謝你指出。我會編輯我的答案。 – Anddrrw

-1

的代碼將是這樣的:

word = 'abcdefghijkl' 
start_pos = 2 

for i in range(start_pos-1,len(word)): 
    result = word[:start_pos+i-1] 
    print i 
    print result 
+0

'word'是函數參數,它在函數被調用時被賦值。 – mkrieger1

+0

,你在考慮變量'string'是你的'word'嗎?檢查答案代碼以驗證它是否運行。 – Marco