Занятие 4: Условия и циклы.
Содержание
Цикл for
Цикл – команда питону исполнить набор каких-либо действий определённое количество раз. Каждое такое исполнение называется итерацией цикла.
В основном в питоне используется цикл for.
Рассмотрим форму его записи на элементарном примере:
ВАЖНО: не забываем ставить двоеточие и делать отступы всякий раз, когда пишем тело цикла!
Перед каждой итерацией переменной цикла присваивается очередное значение из списка, по которому проходит цикл.
Теперь изучим несколько новых функций, которые нам потребуются в циклах.
И рассмотрим сразу их действие на примерах:
range
Заметим, что указывав в скобках одно число N, на выходе мы получим последовательность от "0" до "N-1".
Однако мы можем и задать интервал, начиная не с нуля, а с необходимого нам числа следующим образом:
Разберём более интересный пример и назовём его "Английским алфавитом":
Но не забудьте выйти из цикла... Если команду print оставить в теле цикла, то получим на экране результат каждой итерации:
1 >>> codes=range (ord('A'), ord('Z')+1)
2 >>> letters=[]
3 >>> for code in codes:
4 ... letters.append(chr(code))
5 ... print letters
6 ...
7 ['A']
8 ['A', 'B']
9 ['A', 'B', 'C']
10 ['A', 'B', 'C', 'D']
11 ['A', 'B', 'C', 'D', 'E']
12 ['A', 'B', 'C', 'D', 'E', 'F']
13 ['A', 'B', 'C', 'D', 'E', 'F', 'G']
14 ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
15 ...
Функция ord возвращает код буквы (в кодировке ASCII или в уникоде):
Команда chr обратно переводит код в букву, что мы и увидели в примере.
Индексы и слайсы
Рассмотрим пример:
Как видим, командой letter[10] мы вытаскиваем элемент с номером 10. Это называется индексированием, получением элемента списка по индексу.
В алфавите номеру 10 соответствует буква К, одиннадцатая по счёту. (Не забываем о том, что нумерация начинается с 0)
Пример:
Такой командой letters[1:3] мы получаем список, элементов в указанном диапозоне. Такой список называется слайсом.
ВАЖНО: слайс letters[N:M] начинается с элемента, стоящего под номером N (который мы указываем первым), и заканчивается элементом с номером M-1.
Пример это как раз демонстрирует.
Можем делать слайс от начала и до необходимого элемента: командой letters[:3] например:
Командой letters[:] мы получим в слайсе весь наш список, но
ВАЖНО помнить, что при этом будет создан новый объект, а не ссылка!
Пример:
Соответственно, если мы хотим последний элемент, то нужно использовать команду letters[-1], а два последних элемента – letters[-2:].
Ну и конечно если мы зададим несуществующий промежуток, то ничего на выходе не получим!
Таким примером может являться отрезок [13:-13] для анлгийского алфавита.=)
Удалить слайс:
Видим, что удаление заканчивается N-1 элементом! Но мы это помним.=)
Мы можем не только удалять, но и заменять слайс
Думаю, что если вы внимательно читали предыдущие замечания, то результат для вас не был неожиданным.
(Действительно, командой range(10) мы получили : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Берём промежуток, начиная с первого элемента, то есть с единицы(ведь нулевой элемент и есть ноль в данном случае) и заканчивая элементом N-1, то есть 8.
- А затем заменяем этот отрезок на отрезок [4, 5]. Результат очевиден, если внимательно разобраться.)
Пример на сочетание букв и цифр:
Кортежи и распаковка кортежей
Чем кортежи отличаются от списков?
Ответ:
- его нельзя менять!!!
- записываем его в круглых скобках!!!
Рассмотрим на примерах:
Пример №1.
Пример №2
Во втором примере достаточно подозрительна запись:
1 x, y = B
Пояснение: эта запись определяет операцию, что и в предыдущем примере ПЛЮС проводится проверка, что в кортеже только 2 элемента, а не три и более.
Эта операция называется распаковкой кортежа.
Почти синонимом (кроме проверки длины B) для неё было бы:
Пример №3
Более того, возможен и такой вариант записи:
Теперь научимся делать списки пар.
Функция zip получает на вход два списка и склеивает их попарно:
Запуск функции enumerate - позволяет создавать следующие кортежи:
Таким образом, enumerate сопоставляет значение элемента его индексу.
Очень полезная функция , позволяет, например, провести соединение в пары соседних элементов.
Условия
Запись проста и удобна:
В питоне есть операции сравнения и работы с логическими выражениями, смысл которых достаточно понятен из их записи:
>, <, <=, >= (как слышится, так и пишется: мы говорим "больше равно", так и пишем),
== (двойное равно – сравнение, одинарное равно – присваивание),
!= (не равно),
in (является дли что-то элементом списка), not in,
not (отрицание логического выражения).