Питонка
2 subscribers
71 photos
4 links
Download Telegram
Получилось сделать достаточно много задач.

В одной из задач опять пришлось использовать оператор or, на этот раз, уже зная, что сравнивать надо переменные, к которым присваивается то или иное значение, решил с первого раза.

Но в одном из комментариев пописали работу оператора or:

'суббота' or 'воскресенье' = 'суббота', потому что:

or оценивает второй аргумент, только если первый равен false. И если какой-либо операнд в цепочке or является истиной, немедленно возвращается результат: первое истинное значение.

Для строк '' — пустая строка считается false, все остальное — true.

По-моему, очень толково и сразу запоминается.
Началась тема про циклы, говорят, задачи еще замороченнее, чем про шахматы.

Интересна история, почему в циклах используются переменные i, j, k. Википедия говорит нам, что по общему соглашению об именовании идентификаторов для счетчика циклов используются имена переменных i, j и k (и так далее, при необходимости), где i означает предельное значение счетчика циклов, при котором происходит выход из цикла, j — внутренний счетчик следующего цикла и т. д. Некоторые программисты также используют обратный порядок или дублируют ii, jj, kk, что упрощает их поиск в коде.

К упомянутым трем переменным иногда еще добавляют l, m, n. Эти индексы пошли из программирования на Фортране (в детстве, кстати, была забавная книжка про этот язык программирования, с комиксами :)), где имена переменных от i до n обозначали целочисленный тип, остальные — вещественный тип. В свою очередь, разработчики Fortran позаимствовали эти буквы из математической нотации, где индексы для сумм, умножений и направлений вектора обозначаются i, j, k.
В новых темах разбирали функцию range().

Может принимать в себя три параметра: первый — число, с которого начинается последовательность, второй — число, перед которым заканчивается последовательность, третий — величина шага.

Получается, range() — это своего рода арифметическая прогрессия, первый параметр отвечает за первое число прогрессии, второй — за число, перед которым прогрессия заканчивается, а третий — за шаг прогрессии. Шаг прогрессии — это сколько нужно прибавить или вычесть, чтобы получить следующее число прогрессии.

Если так сравнить, сразу запоминается.
Еще один день, когда смог выделить много времени для решения задач.

Сделал табличку с операторами присвоения в Python: было бы здорово довести их использование до автоматизма, пока при чтении кода присутствует некое замешательство.

Понравился простой способ обмена значениями переменных: x, y = y, x. Переменная x получает значение переменной y и наоборот, переменная y получает значение переменной x. Пример:

x = 2
y = 17
x, y = y, x
print(x, y)

Терминал выведет 17 2 так как теперь x = 17, а y = 2.

Также работает с тремя и более переменными.
Уже прошло треть курса.

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

Завтра-послезавтра будет мало времени на занятия, но 1-2 попытаюсь сделать, чтобы не сбить серию.
Вот и лето наступило.

Приступил к изучению цикла while, пока успел сделать только теоретические задачки на понимание работы этого цикла. Внешне он выглядит больше цикла for, но как объясняют, нужен для разных задач. Посмотрим.

С завтрашнего дня начну параллельно Инди-курс программирования на Python Артема Егорова, к которому добавили на 4 разделе, для закрепления материала.
Начал проходить параллельно Инди-курс от Егорова, начало веселое :) Распределять время буду примерно так: 80% на Поколение, 20% на Инди.

Из интересного: при выполнении одного из заданий впервые выпала ошибка EOFError: EOF when reading a line. Пайтонтьютор на русском объяснил так — Ошибка конца файла: вы уже считали все строки из входных данных, а пытаетесь считать ещё.

Пришлось разбираться и в итоге обнаружилось, что в цикле while операторы and и or ведут себя не так, как ранее было замечено: они поменялись местами. Если условием цикла while являются два отдельных условия, связанных с or, оно будет false только тогда, когда оба условия являются false.

Также сломала голову задача с ведьмаком, где нужно было подсчитать монеты. Получилось около 20 строк, а на форуме решений сплошь 5-10 строчные решения, даже без выкрутасов в виде лямбды или каких-нибудь списков. Что я делаю не так?
Выходные очень занятые, поэтому просто выложу пост со скрином из Степика и сделаю одну-две задачи.
Аналогично вчерашнему дню.
Итак, закончились занятые выходные. Надеюсь, получится теперь чуть увеличить темп прохождения и изучения Python.
На форумах решений часто используют оператор in. В лекциях он вроде был упомянут (а может и нет), но в памяти у меня он почему-то не остался. Решил почитать про его использование.

Оператор in в Python используется для проверки наличия элемента в последовательности. Он возвращает True, если элемент присутствует в последовательности, и False, если его там нет.

Противоположные оператору innot in. Тут все наоборот: если элемента нет в последовательности, то возвращает True, и False — если этот элемент есть.

Синтаксис:

x in list
x not in list

Искать элемент можно в списках, строках, словарях.

Пример на строке (другое еще пока не проходили):

x = 'Python — лучший язык программирования'

'лучший' in x # True
'язык' not in x # False
'Java' in x # False
'JavaScript' not in x # True

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

Также в листингах кода в лекции встретился оператор is, но не объяснено почему-то его применение.

is (и обратный ему is not) — операторы тождественности в Пайтоне. Они проверяют, ссылаются ли переменные на один и тот же объект.

Синтаксис:

x is y # True, если операнды идентичны (указывают на один объект)
x is not y # True, если операнды не идентичны (не указывают на один объект)
x is z # False, если операнды не идентичны (не указывают на один объект)
x is not z # False, если операнды идентичны (указывают на один объект)

Сравните:

x = 6
y = 6

x == y # True, так как совпадают значения, хранящиеся в переменных
x is y # False, так как переменные x и y ссылаются на объекты, находящиеся по разным адресам в памяти.

Python — очень клевый!