2014-10-07 7 views
1

Я знаю, что, чтобы получить индекс символа от конца строки, вы делаете:индекса символа от конца строки

str.index(sub, -1) 

Так почему же этот код продукция и ошибки, когда я называю это?

def test(string): 
     for letter in string: 
      print string.index(letter, -1) 

Спасибо.

+1

[ 'str.index'] (https://docs.python.org/2/library/stdtypes.html?highlight=rindex#str.ind ex) выдает исключение, если подстрока не найдена, вы знаете. –

ответ

1

Я знаю, что, чтобы получить индекс символа от конца строки, ...

Я думаю, вы можете запутаться здесь, он делает не получить индекс от конец строки, он получает индекс от start строки, но только начинает ищет из данного индекса.

Это становится очевидным, если ввести и запустить следующий код:

def test(string): 
    for letter in 'e': 
     print string.index(letter, -1) 

test("abcde") 

и вы правильно получить 4 как выход, положение e с начала строки.

В своем коде (и приведенном выше примере), мы говорим это обыскивать подстрока начиная с индекса -1, что только последний символ в строке.

Итак, если ваша строка "abc", она сначала ищет a в подстроке "c" и, не найдя ее, вызовет исключение.

Изменение кода:

def test(string): 
    for letter in string: 
     print string.index(letter) 
test("abcde") 

даст вам правильные индексы без вызывая исключение.

Если вы сделать нужен индекс с конца строки (так что e является 0 и a является 4), некоторые простые математические манипуляции будут делать это:

def test(string): 
    for letter in string: 
     print len(string) - string.index(letter, 0) - 1 
test("abcde") 

Этот код дает вам, для писем a через e:

4 
3 
2 
1 
0 
Смежные вопросы