2014-02-16 2 views
0

Моя функция имеет три строковых параметра, то есть строку, поиск и замену. Если параметр поиска является пустой строкой, то предполагается, что функция должна вставить заменяемый параметр перед первым параметром, между каждым символом старой строки и после последнего символа старой строки. Вот то, что я сделал до сих пор:Создайте новую строку из старой строки с помощью python (1)

def main(): 
    s='I am going go' 
    x="" 
    y='aa' 

    print(rep_str(s,x,y)) 

def rep_str(s, x, y): 

    if x in s: 
     result = '' 
     i = 0 
     while i < len(s): 
      if s[i : i + len(x)] == x: 
       result += y 
       i += len(x) 
      else: 
       result += s[i] 
       i += 1 


    elif x not in s: 
     result= s 
    else: 
     if x=="": 
      result=y   
      for ch in s: 
       result+=(ch+y) 

    return result 
main() 

Я разработал каждое условие отдельно и поместить их в целом в функции, когда я получил удовлетворительный результат от них. Последнее условие оставалось в отдельном режиме, но оно не работает в функциональном модуле. Я не знаю, в чем проблема с кодом. Буду признателен, если кто-то может дать мне несколько указателей. Благодаря

Мой выход для последнего другое условие должно быть:

aaIaa aaaaamaa aagaaoaaiaanaagaa aagaaoaa 
+5

'x' либо' в s' или 'не в s', чем' иначе, как вы думаете, может случиться? :) – roippi

+0

'' будет в любой последовательности. например, '' 'в' cobra'' → True – zhangxaochen

+0

Последнее условие: если второй параметр является пустой строкой, то новая строка должна начинаться с третьего параметра, поместить третий параметр между каждым символом старой строки и завершить с третьим параметром. –

ответ

1

реструктуризировать вам код:

if x=='': 
    pass 
elif x in s: 
    pass 
elif x not in s: 
    pass 
+0

Спасибо за помощь. Не думал об изменении порядка. Программа работает нормально сейчас. Спасибо снова. –

+0

Если вы уже протестировали 'if x in s', то' if x not in s' является избыточным; просто используйте 'else'. –

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