В прошлых задачах приходилось модуль находить рассчетами, но теперь можно и через функцию abs(), ура! Также с функциями min() и max() стало проще находить минимумы и максимумы.
Также впервые столкнулся с зарезервированным словом, которое вызывало ошибку. Чтобы получить список таких слов, нужно сделать следующее:
1. Запустить в любом терминале Пайтон (я запускал прямо в терминале VSC), написав python и нажав клавишу Enter,
2. Дальше пишем help() и опять нажимаем Enter,
3. Печатаем keywords и получаем список зарезервированных слов для вашей версии Python
Скриншоты приложил.
Также впервые столкнулся с зарезервированным словом, которое вызывало ошибку. Чтобы получить список таких слов, нужно сделать следующее:
1. Запустить в любом терминале Пайтон (я запускал прямо в терминале VSC), написав python и нажав клавишу Enter,
2. Дальше пишем help() и опять нажимаем Enter,
3. Печатаем keywords и получаем список зарезервированных слов для вашей версии Python
Скриншоты приложил.
Началась тема про строковый тип данных.
Были введены новые функции len() и str(), рассказано про конкатенацию строк и их умножение на число. Задачи показались проще, чем раньше, когда была сплошная математика.
Интересное из комментариев:
1) Если перед кавычками вводимого текста поставить букву f, то можно будет сразу в строке, обрамляя фигурными скобками, писать название переменных:
print(f"«Hello {имя} {фамилия}! You just delved into Python»")
2) Помните, что в функциях min и max есть такой аргумент, как key, в который можно передать функцию, по которой будет проводиться вычисление и сравнение. Так вот, туда можно передать и стандартную функцию len. Например,
min('str1', 'str2', 'str3', key=len)
Надо будет запомнить, решал задачи без этих аргументов.
Были введены новые функции len() и str(), рассказано про конкатенацию строк и их умножение на число. Задачи показались проще, чем раньше, когда была сплошная математика.
Интересное из комментариев:
1) Если перед кавычками вводимого текста поставить букву f, то можно будет сразу в строке, обрамляя фигурными скобками, писать название переменных:
print(f"«Hello {имя} {фамилия}! You just delved into Python»")
2) Помните, что в функциях min и max есть такой аргумент, как key, в который можно передать функцию, по которой будет проводиться вычисление и сравнение. Так вот, туда можно передать и стандартную функцию len. Например,
min('str1', 'str2', 'str3', key=len)
Надо будет запомнить, решал задачи без этих аргументов.
Получилось сделать достаточно много задач.
В одной из задач опять пришлось использовать оператор or, на этот раз, уже зная, что сравнивать надо переменные, к которым присваивается то или иное значение, решил с первого раза.
Но в одном из комментариев пописали работу оператора or:
'суббота' or 'воскресенье' = 'суббота', потому что:
or оценивает второй аргумент, только если первый равен false. И если какой-либо операнд в цепочке or является истиной, немедленно возвращается результат: первое истинное значение.
Для строк '' — пустая строка считается false, все остальное — true.
По-моему, очень толково и сразу запоминается.
В одной из задач опять пришлось использовать оператор 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.
Интересна история, почему в циклах используются переменные i, j, k. Википедия говорит нам, что по общему соглашению об именовании идентификаторов для счетчика циклов используются имена переменных i, j и k (и так далее, при необходимости), где i означает предельное значение счетчика циклов, при котором происходит выход из цикла, j — внутренний счетчик следующего цикла и т. д. Некоторые программисты также используют обратный порядок или дублируют ii, jj, kk, что упрощает их поиск в коде.
К упомянутым трем переменным иногда еще добавляют l, m, n. Эти индексы пошли из программирования на Фортране (в детстве, кстати, была забавная книжка про этот язык программирования, с комиксами :)), где имена переменных от i до n обозначали целочисленный тип, остальные — вещественный тип. В свою очередь, разработчики Fortran позаимствовали эти буквы из математической нотации, где индексы для сумм, умножений и направлений вектора обозначаются i, j, k.
В новых темах разбирали функцию range().
Может принимать в себя три параметра: первый — число, с которого начинается последовательность, второй — число, перед которым заканчивается последовательность, третий — величина шага.
Получается, 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.
Также работает с тремя и более переменными.
Сделал табличку с операторами присвоения в 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 попытаюсь сделать, чтобы не сбить серию.
Над последними задачами пришлось подумать, одну пришлось даже с костылем решать, так как все время забываю, что можно сначала print в цикле сделать, а потом решать.
Завтра-послезавтра будет мало времени на занятия, но 1-2 попытаюсь сделать, чтобы не сбить серию.
Вот и лето наступило.
Приступил к изучению цикла while, пока успел сделать только теоретические задачки на понимание работы этого цикла. Внешне он выглядит больше цикла for, но как объясняют, нужен для разных задач. Посмотрим.
С завтрашнего дня начну параллельно Инди-курс программирования на Python Артема Егорова, к которому добавили на 4 разделе, для закрепления материала.
Приступил к изучению цикла while, пока успел сделать только теоретические задачки на понимание работы этого цикла. Внешне он выглядит больше цикла for, но как объясняют, нужен для разных задач. Посмотрим.
С завтрашнего дня начну параллельно Инди-курс программирования на Python Артема Егорова, к которому добавили на 4 разделе, для закрепления материала.
Начал проходить параллельно Инди-курс от Егорова, начало веселое :) Распределять время буду примерно так: 80% на Поколение, 20% на Инди.
Из интересного: при выполнении одного из заданий впервые выпала ошибка EOFError: EOF when reading a line. Пайтонтьютор на русском объяснил так — Ошибка конца файла: вы уже считали все строки из входных данных, а пытаетесь считать ещё.
Пришлось разбираться и в итоге обнаружилось, что в цикле while операторы and и or ведут себя не так, как ранее было замечено: они поменялись местами. Если условием цикла while являются два отдельных условия, связанных с or, оно будет false только тогда, когда оба условия являются false.
Также сломала голову задача с ведьмаком, где нужно было подсчитать монеты. Получилось около 20 строк, а на форуме решений сплошь 5-10 строчные решения, даже без выкрутасов в виде лямбды или каких-нибудь списков. Что я делаю не так?
Из интересного: при выполнении одного из заданий впервые выпала ошибка EOFError: EOF when reading a line. Пайтонтьютор на русском объяснил так — Ошибка конца файла: вы уже считали все строки из входных данных, а пытаетесь считать ещё.
Пришлось разбираться и в итоге обнаружилось, что в цикле while операторы and и or ведут себя не так, как ранее было замечено: они поменялись местами. Если условием цикла while являются два отдельных условия, связанных с or, оно будет false только тогда, когда оба условия являются false.
Также сломала голову задача с ведьмаком, где нужно было подсчитать монеты. Получилось около 20 строк, а на форуме решений сплошь 5-10 строчные решения, даже без выкрутасов в виде лямбды или каких-нибудь списков. Что я делаю не так?
Итак, закончились занятые выходные. Надеюсь, получится теперь чуть увеличить темп прохождения и изучения Python.