2016-11-03 58 views
-1

如果我要運行諸如(「hello」,3)的duplicateString(aString,value),它應該返回「hhheeellllllooo」。這是我所擁有的,但它所做的只是將整個單詞返回三次。我不知道如何告訴它將每個元素而不是整個字符串相乘。任何人都可以幫我嗎?如何在Python中乘以一個字符串中的單個元素?

def duplicateString(aString,value): 
     return (aString)*(value) 

因此,這是它做什麼,如果我使用打招呼,3 ...

duplicateString("hello",3): 
    "hellohellohello" 
+0

您需要遍歷原始字符串的字符,並將'char * 3'串聯到結果中。 – Barmar

回答

1

您只需

def duplicateString(aString,value): 
    newString = "" 
    for char in aString: 
     newString += char * value 
    return newString 
0

試試這個,可能是幫助你... ...

newstring ='' for a letter in aString: for i in range(value): newstring + =信
回報(newstring)

應該做的伎倆......

+0

這是一個非常低效的算法。每次添加一個字母時,都會創建一個新字符串,首先將所有現有字母複製到一個新字符串中。 –

2

要複製你的代碼整個字符串。相反,您需要遍歷字符串的單個字符並複製它們。這是做這件事:

def duplicateString(astring, value): 
    return "".join(ch * value for ch in astring) 

[ch * value for ch in astring]hello3['hhh', 'eee', 'lll', 'lll', 'ooo']。擺脫[],以避免在評論中創建Steven建議的中間列表。

join使所需的字符串出來。

+0

這將比天真的+ +方法快得多 – TemporalWolf

+0

您可以刪除括號('[]')以避免創建中間列表。 –

相關問題