2016-09-10 3 views
0

Мне нужно написать функцию, которая берет строку (str) и две другие строки (называет replace1 и replace2) и целое число (n). Функция должна возвращать новую строку, где все строковые вводы от replace1 в первой строке (str) и заменить новую строку на replace1 в зависимости от того, где вы хотите новый вход. Я не должен использовать встроенные функции, но я могу использовать объектив (мы можем предположить, что replace1 имеет длину 1). Пример (назовите его replaceChoice):Заменить входные строки и целые числа

>>> replaceChoice(“Mississippi”, “s”, “l”, 2) 
'Mislissippi' 

Надеюсь, я объяснил это хорошо. Вот моя попытка:

def replaceChoice(str1, replace1,n): 
newString="" 
    for x in str: 
     if x=="str1": 
     newString=newString+replace 
    else: 
     newString=newString+x 
    return newString 
+0

Где находится параметр 'replace2' в вашей попытке? – gus27

+0

Что происходит, когда вы вызываете свою функцию так, как вы ее там написали? Я подозреваю, что даже если отступ исправлен, потому что он будет ошибочным, когда он достигнет 'newString = newString + replace', потому что вы не передаете' replace' в качестве аргумента – Andrew

+0

Вы также не указываете явно, что вы используете целочисленный аргумент 'n' для, хотя похоже, что это позиция, которую вы хотите вставить (т. е. ваш пример должен заменить второй' s' в строке предложенным символом). Очевидная домашняя работа очевидна. – Andrew

ответ

1

Я предполагаю из вашего вопроса, что вы хотите заменить n-е вхождение r1 на r2. Это то, что вы хотите?

>>> def replaceChoice(str1, r1, r2, n): 
...  new_str = "" 
...  replaced = False 
...  for i in str1: 
...    if i==r1: 
...      n-=1 
...    if n==0 and not replaced: 
...      replaced = True 
...      new_str+=r2 
...    else: 
...      new_str+=i 
...  return new_str 
... 
>>> replaceChoice("Mississippi", "s", "l", 2) 
'Mislissippi' 
+0

Строго говоря, 'range' является встроенной функцией python. Вы можете сделать это с помощью 'for i in str1' и поменять значение' i' на 'r2', когда 'n == 0' –

+0

@ RolfofSaxony Отредактировано. –

Смежные вопросы