2013-05-25 11 views
0

Вот цель моей функции в:Пожалуйста, помогите мне очистить мою функцию

Определить процедуру, find_last, которая принимает в качестве входных данных две строки, строку поиска и целевая строка, и возвращает последнюю позицию в строка поиска , где отображается целевая строка, или -1, если нет вхождений.

Here is a link to the question.

А вот моя функция до сих пор:

def find_last(target, search): 
    find = target.find(search, 0) 

    if find != -1: 
     targets = target.find(search, find) 

     while targets != -1: 
      find = find + 1 
      targets = target.find(search, find) 
     return find - 1 
    else: 
     return -1 

код возвращает ответ я ищу с return find - 1, но я знаю, что есть лучший способ пойти о выполнении это.

Любая помощь была бы принята с благодарностью!

+0

Вы приезжаете в SO для обзора домашних заданий?!?! – donfede

+0

@donfede: Ничего плохого в том, чтобы спросить, как улучшить отлично действующий код. – Blender

+0

Это может быть хорошим кандидатом для [обзора кода] (http://codereview.stackexchange.com/questions) – srikanta

ответ

9

Вы в основном реализовали target.rfind(search).

6

Почему вы не используете rfind?

>>> d = "ball foo ball" 
>>> f = "ball" 
>>> d.rfind(f) 
12 

Таким образом, ваш метод становится 1 вкладышем :)

def find_last(target, search): 
    return target.rfind(search) 

Вы можете вернуть target.rfind(search) и в вызывающей проверке методы для -1 и обрабатывать соответствующим образом.

не может сопротивляться процитировать этот удивительный кусок от XKCD

look I am flying with Python :P

+0

+1 для XKCD. – CppLearner

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