2016-02-22 3 views
0

Я хочу найти индекс последнего экземпляра буквы в строке. Код должен содержать строку и символ. Например, если я пишу ("hello", "l"), я должен получить 3. Вместо этого я получаю -4. Я знаю, что 3 и -4 такой же в зависимости от того, где вы начинаете считать, но я хочу, чтобы получить 3. Вот моя попытка:Найти письмо в строке

def find(string, ch): 
    index = 0 
    while index < len(string): 
     if string[index] == ch: 
      return index 
     index = index - 1 
    return -1 

Спасибо!

+0

Я думаю, вы имеете в виду последний индекс символа в строке? – Michael

ответ

2

Логика вашего кода неверна. Попробуйте следующее:

index = len(string) - 1 
while index > 0: 
    if string[index] == ch: 
     return index 
    index -= 1 
return -1 
+0

Спасибо большое! Это сработало! –

+1

@ Newbie_01 Просьба принять ответ, если он вам помог. Это поможет другим, кто увидит этот вопрос позже –

1

Вы изобретаете колесо.

my_string.rfind(char_or_substring) 

Кроме того, не название вашей переменной string. Вы затеняете модуль python с тем же именем.

6

Используйте стандартный метод rindex:

def find(s, ch): 
    return s.rindex(ch) 
1
def find(string, ch): 
    index = -1 
    for i in range(len(string)): 
     if string[i] == ch: index = i 
    return index 

Просто смотрите через строку. Когда вы найдете символ, обновите значение индекса.

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