2017-05-25 63 views
2

所以我需要創建一個遍歷整數列表的函數,並用這些整數作爲索引打印字符串的字符。事情是這樣的:遍歷一個列表並打印一個字符串的那些元素

printString('123456789',[1,7,5,3]) 
2 
8 
6 
4 

我有這樣的:

def printString(s,list): 
    i=0 
    resultString=str() 
    for i in range(len(list)): 
     resultString= s[list[i]] 
     i=i+1 
    print (resultString) 

,但只打印字符串的第一個字符,我想有一個問題for循環,我只是不能找出它是什麼。

任何幫助將是有用的!謝謝

+1

你可以改善你的循環本身:而不是'我在範圍內(len(list))'後面跟'list [i]',只需要'for i in list '。不需要創建一個範圍來生成索引然後檢索該項目。循環構造爲你做。 – dsh

+0

關於你的代碼的附加註釋:'i = 0'沒有任何用處,當你在循環中重用'i'時,該值被覆蓋。 'resultString = str()'這行也沒有用,因爲在你使用變量之前,你在循環中重新賦值給'resultString'。最後,'i = i + 1'這個語句也沒有用,因爲'i'被循環結構覆蓋。所以你可以刪除這三行而不改變程序的結果。 – dsh

回答

1

移動print(resultString),以便它在循環內。

def printString(s,list): 
    i=0 
    resultString=str() 
    for i in range(len(list)): 
     resultString= s[list[i]] 
     i=i+1 
     print (resultString) 

附加但非必要的建議:

你不需要i=0i=i+1,因爲for環路已經做創建併爲你增加價值的工作。

def printString(s,list): 
    resultString=str() 
    for i in range(len(list)): 
     resultString= s[list[i]] 
     print (resultString) 

你不需要resultString=str()因爲Python是非常幸福的,沒有任何提示,以創建一個函數中一個新的變量,其類型應該是什麼。

def printString(s,list): 
    for i in range(len(list)): 
     resultString= s[list[i]] 
     print (resultString) 

根本不需要resultString,因爲您只使用一次它的值。

def printString(s,list): 
    for i in range(len(list)): 
     print (s[list[i]]) 

如果您沒有特定的索引需求,最好遍歷列表的元素而不是索引。

def printString(s,list): 
    for idx in list: 
     print (s[idx]) 

儘量不要使用與內置類型名稱相同的變量名稱。

def printString(s,seq): 
    for idx in seq: 
     print (s[idx]) 
2

導致這樣的功能:

printString('123456789',[1,7,5,3]) 
2 
8 
6 
4 

可以以多種方式來實現,這是我應該怎樣做。

def printString(input, indexArr): 
    for i in indexArr: 
    print(input[i]) 

printString('123456789',[1,7,5,3]) 

Live Demo

0

那是因爲你沒有附加的所有結果到字符串,這會給你答案:2864

def printString(s,list): 
    i=0 
    resultString=str() 
    for i in range(len(list)): 
     resultString+=s[list[i]] 
     i=i+1 
    print (resultString) 

printString('123456789',[1,7,5,3]) 
0

這裏有幾個問題。首先,print語句應該在循環內縮進。其次,儘管它在這裏無害,但您不應該自己操縱i,但請保留for循環爲您完成。最後,list是一個變量的可怕名稱,因爲它隱藏了python的內置列表。把它放在一起,你會得到這樣的事情:

def printString(s, lst): 
    for i in range(len(lst)): 
     resultString = s[lst[i]] 
     print (resultString) 
0

鑑於你ARGS作爲測試用例:

#!/usr/bin/python 

def printString(strng, indexes): 
    return ''.join((c for i,c in enumerate(strng) if i in indexes)) 

它使用enumerate()和發電機。

0

你只需要把print語句放在for循環中。它只打印最後一個元素,因爲它每次都被覆蓋。你也可以簡單地使用它:

def printString(s,list): 
resultString=str() 
for i in range(len(list)): 
    resultString= s[list[i]] 
    print (resultString) 
相關問題