2016-11-03 16 views
-1

Если я должен был запустить duplicateString (aString, value), например («hello», 3), он должен вернуть «hhheellllllooo». Это то, что у меня есть, но все, что он делает, возвращает три слова три раза. Я не уверен, как сказать ему, чтобы умножить каждый элемент, а не всю строку. Может ли кто-нибудь помочь мне?Как разбить отдельный элемент на строку в 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 = '' для буквы в aString: для i в диапазоне (значение): NewString + = письмо
возвращение (NewString)

должен сделать трюк ...

+0

Это ужасно неэффективный алгоритм. Каждый раз, когда вы добавляете письмо, он создает новую строку, сначала копируя все существующие буквы в новую строку. –

2

Вы копируете всю строку кода. Вместо этого вам нужно перебирать отдельные символы строки и дублировать их. Это один из способов сделать это:

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

[ch * value for ch in astring] для hello и 3 дает ['hhh', 'eee', 'lll', 'lll', 'ooo']. Избавьтесь от [ и ], чтобы избежать создания промежуточного списка, предложенного Стивеном в комментариях.

join делает требуемую строку из нее.

+0

Это будет намного быстрее, чем наивный подход 'for + =' – TemporalWolf

+0

Вы можете удалить скобки ('[]'), чтобы избежать создания промежуточного списка. –