Видеокурс выложен на сайте Altube.ru вместо Youtube и плеер Altube не поддерживает субтитры. Прошу решить вопрос о предоставлении русских субтитров в этом англоязычном видеокурсе. |
Строки
По ссылке youtube выложено видео с русскими титрами.
12.1. Строка - это последовательность
Строка - это последовательность символов. Вы можете получить доступ к одному символу с помощью оператора скобок:
>>> fruit = 'banana' >>> letter = fruit[1]
Вторая инструкция извлекает символ из позиции 1, хранящейся в переменной fruit и помещает его в переменную letter.
Выражение в скобках называется индексом (index). Индекс обозначает, какой символ в последовательности вы хотите получить:
>>> print letter a
Для большинства людей, первая буква в 'banana' это b, а не a. Но в Python индекс - это смещение от начала строки, смещение для первого символа – нуль:
>>> letter = fruit[0] >>> print letter b
Таким образом, b - это нулевая буква 'banana', а - это первая буква и т.д.
Вы можете использовать любое выражение, включая переменные или операторы, в качестве индекса, но значение индекса должно быть целочисленным (integer):
>>> letter = fruit[1.5] TypeError: string indices must be integers
12.2. Получение длины строки с использованием len
len - встроенная функция, которая возвращает число символов в строке:
>>> fruit = 'banana' >>> len(fruit) 6
Чтобы получить последний символ в строке можно попробовать следующее:
>>> length = len(fruit) >>> last = fruit[length] IndexError: string index out of range
Причина IndexError в том, что не существует буквы с индексом 6 в строке 'banana', поэтому исправленный вариант:
>>> last = fruit[length-1] >>> print last a
Взамен можно использовать отрицательные индексы, которые считаются с конца. Выражение fruit[-1] выдаст последний символ, fruit[-2] - второй с конца строки и т.д.
12.3. Обход через строку с помощью цикла
Множество вычислений включают посимвольную обработку строк. Часто они начинаются с начала строки, выбирают каждый символ по очереди, делают что-то с ним и продолжают до окончания строки. Этот шаблон обработки называется обход (traversal). Один из вариантов написания обхода с помощью цикла while:
>>> index = 0 >>> while index < len(fruit): letter = fruit[index] print letter index = index + 1 b a n a n a
Этот цикл обходит строку и отображает каждый символ строки отдельно.
Условием цикла является index < len(fruit), т.е. когда index становится равным длине строки, условие становится ложным (false) и тело цикла прекращает выполняться.
Другой способ написания обхода с помощью цикла for:
>>> for char in fruit: print char
Каждый раз, в цикле следующий символ в строке присваивается переменной char. Цикл работает, пока не закончатся символы.
12.4. Срез строки
Часть строки называется срезом (slice). Выбор среза аналогичен выбору символа:
>>> s = 'Monty Python' >>> print s[0:5] Monty >>> print s[6:12] Python >>>
Оператор [n:m] возвращает часть строки от n-ого символа до m-ого символа, включая первый, но исключая последний. Это противоречивое поведение, но оно позволяет представить индексные указатели между символами, как на следующей диаграмме:
Если опустить первый индекс (перед двоеточием), то срез будет начинаться с начала строки. Если вы опустите второй индекс - срез завершится в конце строки:
>>> fruit = 'banana' >>> fruit[:3] 'ban' >>> fruit[3:] 'ana'
Если первый индекс больше или равен второму, то результатом будет пустая строка (empty string), представленная двумя кавычками:
>>> fruit = 'banana' >>> fruit[3:3] ''