Строки
Повторение: последовательности (кортежи и диапазоны)
Индексация: seq[n]
Проход циклом: for el in seq: …
Длина: len(seq)
Распаковка: a, b, c, d = range(5, 12, 2)
Входит ли элемент в последовательность: if elem in seq: …
Сложение и умножение на число (не работает с диапазонами, что логично)
Ещё операции над последовательностями
Отрицательные индексы:
Попробовать seq[-1], seq[-2] и т. п. и объяснить, что это значит
Секционирование (сечение, срез):
- Взятие подпоследовательности. Работает и на диапазонах, но для простоты будем тренироваться на кортежах.
- Подпоследовательность — новый объект, он создаётся операцией секционирования
С шагом 1: seq[начало:конец]
Ввести кортеж и вывести его вторую половину (большую, если длина нечётна)
Умолчания
С отрицательным шагом
С шагом N
Ввести кортеж и вывести каждый третий его элемент, начиная с первого (не с нулевого!)
Отсутствие ошибки индекса при секционировании
Строки
Напоминаю, что в программировании «символами» называются знаки — буквы, цифры, знаки препинания и т. п. ☺
Задание строки: «'», «"», «'''» и «"""»
Спецсимволы; в действительности нам интересен только "\n".
Строка как последовательность
- Тезис
Строка — это последовательность символов
убедиться, что строка поддерживает все операции с последовательностями
…есть проблемы с in?
- Антитезис
- В Python нет типа данных «символ» (ну, или «знак» ☺)
- Синтез
- Элементом строки в питоне является… строка длиной 1
Бонус: Операция in ищет не элемент строки, а подстроку любой длины
Пустая строка: ""
Это False
Ни на что не влияет: "asd" + "" * 100 + "QWE" — это "asdQWE"
Методы
В программировании «методом» чаще всего называют особого рода функцию (то есть именованный алгоритм — подпрограмму), которая отличается от обычной функции тем, что всегда применяется к данному конкретному объекту.
Синтаксис: объект.метод(параметры)
Методы кортеж.count(элемент) и кортеж.index(элемент)
Как посмотреть все методы и поля объекта: dir(объект)
Строковые методы
Методы преобразования строки (.upper(), lower(), title() и т. п.)
Проверочные методы вида .ısчто-то-там()
строка.find(подстрока) — это тот же in, только возвращается не True/False, а либо индекс, c которого начинается подстрока, либо -1, если её нет.
Есть ещё .rfind(). Исследуйте и скажите, в чём разница? ☺
Исследуйте и скажите, в чём особенность строка.count(…) и строка.index(…)?
Подсказка: строка.count(ЧТО?)
Методы форматирования строки (.ljust(), .rjust(), .center() и т. д.)
Поиск с заменой .replace(что, на что[, сколько раз])
Ввести строку, удалить из неё все пробелы, вывести результат
Решение задач
Задача: ввести строку, удалить из неё все не-буквы, вывести результат
Проблема: .isalpha() есть, а .isнебуква() нет.
Построим алгоритм на русском
Решим задачу
(Если успеем, ещё пару не самых простых задач из домашки)
Д/З
Отщёлкать пятое занятие учебника и решить все задачи
Скопировать решения в соответствующие файлы и проверить, что они всё ещё работают!
Имена файлов — от prog_5_1.py до prog_5_12.py
Прислать эти 12 файлов в виде двенадцати приложений к одному письму по адресу <uneexlectures AT cs DOT msu DOT ru>
В поле Subject должно быть «слово» PhilosoPython2022 (другие слова тоже можно ☺)