Transcription
Вот давай разберёмся, да, по поводу мы говорили, да, про запуск скрипта, про гит.
>> Угу.
>> Да, это мы с тобой поговорили. Так, и нам нужно разобраться со структурой проекта. А, ну вот смотри, для создания проекта в Пачарме, вот опять же, да, запись будет, ты можешь это посмотреть, м, как это делается, да? Мы нажимаем, допустим, у тебя вот выше будет файл, и ты нажимаешь новый проект New Project.
Вот у тебя здесь появляется менюшка, да, в котором у тебя есть локация, а куда проект у нас идёт, и, соответственно, какие-то настройки, то есть там выбор интерпретатора питоновского, ээ, создать гиitрепозиторий в этом проекте. Ну, то есть он у тебя уже будет создан, да? Там нужно просто будет указать источник, куда там его добавлять. Вот. Ну и welcome SCPT - это просто базовый какой-то скрипт идёт.
Вот по поводу интерпретатора питоновского, вот это важно, да, потому что у тебя, если не будет настроен интерпретатор, то, естественно, у тебя и не будет, э, ты не сможешь скрипты запускать. Ну, это как бы понятно, да, потому что Ну, а как ты можешь запустить то, чего, если у тебя его нету? Вот. То есть как бы это вот важно иметь в виду. Вот.
Ну и в задании м в задании А, ну, ну, давай дальше я просто создам. Допустим, вот в задании написано: "Создайте проект". Ну вот, чтобы имя задать, ээ, вот оно указывается вот здесь вот. То есть идёт у тебя Pharm Projects папка, как правило, и дальше нужно указать имя. Ну вот имя можно написать, допустим, там My Project. Вот я здесь опять же не не указываю создать Git repository. Пусть там ничего не будет. Вот.
Ну и, соответственно, выбор там интерпретатора. Вот как раз-таки Project VENF. VENF - это вот что важно иметь в виду, это виртуальное окружение.
>> Угу.
И без него как бы у тебя ты не сможешь накатывать библиотеки, ты не сможешь запускать вообще скрипты, потому что в этом там как раз-таки находится ещё этот питон. Вот. И, собственно, таким образом мы, ну, то есть в это окружение будут устанавливаться там библиотеки, которые нам понадобятся, допустим, там для работы с Экселем. Мы будем сюда устанавливать. Не глобально куда-то, да, на Можно и глобально, конечно, делать, но зачем, как бы, как сказать, мусор, ну, замусоривать операционную систему там непонятно чем. Ну, конечно, да, если просто так мы, ну, глобально это ставить зависимость, это, короче, не очень хорошо.
Ну так вот, вот создаём проект Create. Нам говорят там открыть в новом окне либо в этом окне. Ну, ну скажем, в этом окне. Вот всё, проект создался. Обрати внимание, вот создаётся сразу папка товен. Здесь вот, если мы откроем bin и вот как раз-таки находишься на наш пип. Пип - это Python Package менеджер, пакетный менеджер Python. Вот. Ну и здесь, естественно, бинарники для питона, для его запуска. Вот они вот здесь вот находятся. Так, это у нас, ну, вот такой вот дав. А это вообще аляс. Вот. Ну, собственно, да, вот таким вот образом здесь находится вот виртуальное окружение. Ну и, соответственно, библиотеки, которые мы будем устанавливать.
Вот здесь идёт уже сразу Python 3.13. Вот опять же окружение ещё, если вот мы посмотрим в Пачарме, оно настраивается у нас вот вот здесь вот мы пишем Python. Ну лучше написать interpretor, вот projects, my projects. И вот как раз-таки вот здесь указывается Python Python interpretator. Как видишь, путь именно находится myprojects.vnent в bein Python. Как раз-таки вот в этом виртуальном окружении указывается путь до питона. И вот здесь вот через интерфейс Пайчарма видно как раз-таки библиотеки, которые мы можем накатывать сюда. Вот это в целом достаточно удобно. Вот. Но по сути это представление того, что как раз-таки находится в папке. Вот. То есть, ну, в целом, я тут думаю, понятно.
А вот давай теперь поговорим про Здесь. Понятно всё, да? Есть какие-то вопросы?
>> Всё понятно.
>> Ну, ничего не поменяем, просто проверим, да, что он,
>> >> ну, мы как бы ээ А что ты под изменения имеешь в виду?
>> >> Не просто, ну, какой-то э ничего же не поменял. Э просто, ну, просто проверяешь, да, вот это именно правильно или же работает или нет.
>> >> А правильно ты что имеешь в виду? Ну вот это интерпретатор Python.
>> >> Ну мы смотрим, да, мы здесь просто смотрим, откуда он, из какого места он берёт вот как разки питоновские интерпретаторы. Можно задать это место, то есть можно вот указать там другое место, но как бы лучше в рамках опять же вот того виртуального окружения, которое создалось у нас в проекте. Вот указать здесь путь до питона, да, и уже с ним в дальнейшем работать. Вот, то есть здесь можно как бы и библиотеку, то есть, кстати, вот даже удобно здесь вот можно набрать это именно сайт ПИП. Вот, допустим, там какой-то Mat Plotlip. Вот вот MP plotlip, да. Вот можно его, допустим, отсюда скачать, этот пакет. В целом, как бы можно и так. Можно через команды. Вот лучше, конечно, уметь через команды делать. Вот. Ну ладно, это на сейчас нам пока это не сильно важно. Вот.
Да. И вот давай теперь поговорим про структуру Python проекта, да, как она в целом должна плюс-минус выглядеть. Ну, как правило, так. Ну, вот смотри, мм, должно, вот должен быть файл main P. Вот main во многих вообще языках программирования это точка входа в нашу программу. То есть как бы, ну, это как бы он не обязан вот так вот называться, но лучше называть вот main, то есть вот главное, то есть это как некая точка входа. Вот, то есть идёт file main P, и здесь у нас запускается, инициализируется, там импортируются другие пакеты в наше, то есть в рамках нашего приложения.
Вот, допустим, там дальше у нас идёт, ну, вот как можно сказать, там, как бы лучше вот назвать, ну, допустим, допустим, там некоторые тулзы, тулзы, ну, или утиусы, это может там как-то там ещё что-то. Ну, то есть как бы какие-то некоторые вспомогательные там функции могут идти. То есть, ну, то есть есть у нас основной точка входа, да, то есть main P файл. И дальше идут у нас, к примеру, тузы или усы, которые мы, то есть вспомогательные там функции идут, к примеру, вот в этих файлов.
И смотри, как бы ещё что важно, вот очень хорошая практика, вот лучше это запоминать, а в нашем проекте всегда делать файл readmi. Объясню, почему. А потому что в этом файле должна, по-хорошему содержаться информация о проекте, да, то есть там название проекта, там цель, какую он вообще выполняет, да, то есть это очень хорошая практика. И вот эти MD файлы, у них есть определённый, опять же, формат того, как их писать. То есть вот ты, если пишешь там одну решёточку, это вот заголовок там первого уровня, да? То есть если ещё одну решётку добавить, он уже станет там второго. Ну, короче, мы как бы сейчас не будем сильно в это погружаться, как в этот формат MMD, но в целом, как бы, можно в любом случае там у чат GPT спросить, как вот там списки делать. Вот, допустим, там вот, ну, то есть здесь можно таблицы тоже создавать. То есть это вот как бы немного похоже на HTML, но это не совсем, конечно, HTML там вот, но это просто имеет там сходство. Вот, то есть списки там вот можно таблицы делать, они как бы делаются вот через эти черты как-то вот вот так вот. Ну, хотя нет, что-то не сделалось, да? Ладно, это как бы не суть важно. В общем-то, здесь можно сделать практически что угодно. То есть чат GPT дал, как бы ему сказал, что вот мне надо описать, он, в принципе, нормально эти файлы делает. Вот. То есть код можно вставлять, тоже это очень полезно, да? То есть вот можно написать команду, к примеру, там Python, ну, то есть Python, допустим, там main Python. Вот. То есть и можно указать, допустим, там язык, да, то есть и и всё. И потом ты, когда на этот файл смотришь, ага, видишь кнопочку запустить, запускаешь и всё работает. То есть вот этот Redmi. Файл полезная штука, да, потому что ты можешь здесь описать, как развернуть свой проект. То есть развернуть означает, как его запустить локально, там, допустим, там настройки докера тоже могут быть указаны, да? То есть, ну, до докера далеко, конечно, нам сейчас пока, но как бы тем не менее вот можно сказать об этом. Ну вот и вот это, да, сейчас стоит пока запомнить.
Вот. А, но смотри ещё вот что интересно, да? Допустим, представим ситуацию. А вот мы сделали там тулзы, потом у нас появляются какие-то другие тулзы, потом ещё третий, там, потом ещё новые. Вот проект - это ситуация, когда проект начинает разрастаться, то есть становиться больше, то есть больше всяких функций, больше там всяких модулей. Но, естественно, как бы нужно структурировать всё это. То есть, ну, нельзя, чтобы у нас без папок вложенных каких-то было, да? То есть нельзя, чтобы, ну, то есть не то, что нельзя, да? То есть это не совсем корректно вот так делать. Ты, конечно, можешь так делать, да, что у тебя в рамках там одного каталога файлов будет, но не стоит, да? То есть уже как бы начинается проблема того, как эти файлы структурировать. И принято делать папку src. То есть SRC - это как бы как исходный код, да, в котором вот мы уже можем там положить наши, к примеру, там тулзы, да, некоторые там, допустим, там, например, там некоторые репозитории. Это просто сейчас пока не вдавайся в подробность, что это означает. Там, допустим, database, там, допустим, autentificate, то есть авторизация, да. Вот. И вот мы уже как бы вынесли вот эту часть сюда. Допустим, там у нас ещё идут затем тесты, да, мы, к примеру, там, допустим, делаем э тест там database, вот проверяем, там пишем юниттеста. И вот так вот мы начинаем структурировать наш проект, да, чтобы он как бы, ну, то есть в процессе он будет разрастаться и, естественно, нужно это правильно дело структурировать. То есть как бы нельзя, чтобы это, ну, без папок было и не структурировано, да.
Вот тут понятно. Ну, у тебя микрофон, да, если что, выключен. Вот это каждый ээ файл ты, собственно, сам сформировал, да?
>> >> Ну дада. То есть я просто взял, создал файлы и туда поместил. Пока неважно, тут ничего нету в этих файлах. Я тебе просто описываю ситуацию, когда проект начинает разрастаться. То есть это нормальная история. Если у тебя большой проект, его нужно будет потом структурировать. Смотри, нам как бы сейчас достаточно, ну, то есть нам не надо вот это вот всё, да? То есть нам, в принципе, пока и хватит там вот этой там main P там в одного пока файла, но как бы со временем
>> >> >> вот это вот это Ridm MD файл, видишь же?
>> >> >> >> Угу.
>> >> >> >> >> Как он откатал здесь
>> >> >> >> >> смерла, как я его создал,
>> >> >> >> >> >> да? Но создаётся он просто, то есть у него расширение точка MD. И вот, чтобы его создать, нужно сделать файл. Опять же, тут, в принципе, наверное, есть и этот. А, ну тут нету, но это неважно. Ты пишешь вот так вот readmi. Расширение. MD. Вот. И всё. Создаётся такой файл, у которого есть формат. Там вот опять же, да, как я вот показал, там заголовок первого, второго,
>> >> >> >> >> >> потом дальше там код можно вставить, потом таблички, потом картинки сюда тоже можно вставлять. Вот, то есть как бы можно всё это делать. Ну вот.
Теперь смотри, вот как создавать опять же файл в PRM. Но опять же, как я говорил, это new файл, указываем имя файла, допустим, там, к примеру, test.p. И вот, соответственно, файл у тебя создался. То есть достаточно просто через
>> >> Да, всегда через точка P, да.
>> >> >> Ну, питоновские скрипты, да, питоновские скрипты через точка P. Другие файлы, естественно, соответствующие инфоматы нужно писать.
>> >> >> >> А, в таком случае корректно работает, да?
>> >> >> >> >> Да, да, всё, всё корректно. Главное правильное расширение задать файлу, тогда всё нормально создастся. Если, конечно, ты напишешь там вместо Пай там, не знаю, там заглавную какую-то, ну, в целом-то нормально, но ладно. Вот, допустим, вот такой пример. Вот так вот уже ненормально. Уже вот такой файл там не будет. Если здесь будет написано там print, ну, вроде питоновская функция, но, естественно, ты его не сможешь запустить никак, потому что это как бы файл уже у него испорченное расширение. То есть нужно делать, да, точка пай.
>> >> >> >> >> Это это строгие правила Пайthна, да?
>> >> >> >> >> >> Это не это даже не строгие правила Пайтона, это в целом именно, ну, во многих даже языках программирования, то есть у тебя файл должен быть чёткого расширения. И вот для питоновского файла у него чёткое расширение - это точка π. Вот.
>> >> >> >> >> >> Понятно.
>> >> >> >> >> >> Ну, то есть вот это вот, да, вот это обязательно.
Вот, э, как создать мы разобрались, да? Мм, так, ну, опять же, можно ещё сразу создать питоновский файл. Вот и Pythonфайл, если ты не хочешь ставить там на конце точку. Вот. И здесь вот, допустим, там Python Unit теста. Ну вот нужно выбирать именно файл, допустим, там тест 2. Вот всё создаются сразу, как бы.
>> >> А здесь Юпитер тоже есть, да, получается?
>> >> >> Питер, да? Да, он есть. То есть его вот можно тут с вот так.
>> >> >> >> Это это что создаёт, если что?
>> >> >> >> >> Ну да, он есть тут вот, допустим, там, вот тербук в целом. Мы вот с ними тоже можем поработать. Вот. Ну вот, соответственно, ну его нужно запустить. Он стартует сервер, устанавливает ещё пакеты специальные. Вот.
>> >> >> >> >> >> А
>> >> >> >> >> >> черезстка вот вот это работает, да?
>> >> >> >> >> >> >> Да, это, естественно, работает. То есть тут и Анаконда, Конда, по-моему, так называется, тоже она работает. То есть никаких тут проблем нет с этим. Вот единственное только всё это будет устанавливаться, потому что для вот Юпитера у него своё расширение есть, которое ему нужно. Вот. Ну ладно, да, это сейчас дойдём до этого.
Вот по поводу запуска, да. Мм, надеюсь, помнишь, да, как запускать? То есть вот нажимаем правую кнопку мышкифайл run либо через консоль. То есть зашли, мы пишем Python, мм, то есть указываем, а, ну, то есть можно указать версию, да, то есть либо вот так, но у тебя так скорее всего будет недоступен. И указываем наименование файла. То есть я пишу main.pil. Вот, соответственно, вот таким образом запускается. Ну, то есть под капотом, когда ты запускаешь ран, он как происходит? Вот видишь, обрати внимание, указывается путь до интерпретатора питоновского, да? То есть он запускает его из этого в окружении и запускается наш файл. То есть вот ещё раз я могу даже вот так вот сделать указать ээ whenf. Так, whenf почему-то так when затем идёт bin и python. Вот python. Э, так он же так у нас запускался, да? Вот всё. То есть, ээ, ну, то есть указываю путь, да, до этого питона на винде там похоже. Ну, и указываю наименование файла. Вот всё, он отработал. Вот. Ну это, да, так вот мы вспомнили об этом.
Ну, так вот и по поводу, да, м, по поводу гита в Пайчарме. Ну вот смотри, вот как мы, да, говорили вот на прошлом занятии, git вот есть вот эта вкладочка, она будет вот здесь, можно перенести сюда. Это version control. А сейчас пока гит не инициализирован, да, как бы его нужно инициализировать. Опять же вот вспоминаем, пишем мы команду Git.
>> >> Алло.
>> >> >> Дадада.
>> >> >> >> Слышно? Да.
>> >> >> >> >> Угу, видно, да? Ну, там же Git и да, должен написать,
>> >> >> >> >> >> да? Git. Git init. Ну вот всё, как его, да, там описано. Вот всё мы инициализировали, сразу появилось вот во вкладке Git соответственно проект, да, то есть можно написать теперь git status. Вот, соответственно, Git нам подсвечивает, что нам нужно файлы добавить, а, соответственно, в GIT, да, чтобы он отслеживался. Ну вот он говорит, что нужно вот это вот эти все файлы добавить.
Ну вот смотри, как бы мы можем добавить, к примеру, давай вот это ноутбук-то удалим, нам он не нужен. Ну и test. Удалим. Вот. И чтобы у нас как бы main P отслеживался, мы можем написать команду Git и указать там main P. Вот так наименование вот этого файла. Всё, он добавляется. Вот. можно либо через интерфейс веб этого пайчарма, то есть навестись вот правой кнопкой мышки git и вкладка. Всё тоже зелёным будет подсвечиваться, то есть и как бы и так и так можно. Вот, чтобы всё опять же добавить, git точка ставится, но тут нужно быть аккуратным, потому что если что-то лишнее добавится, оно потом будет отслеживаться, нужно будет удалять.
Вот, соответственно, комит можно сделать первое, то есть можно закомитить через кнопку git commit. Ну и, соответственно, указать, что там инит. Вот так. Либо опять же вот git comit команда мину и всё то же самое. То есть либо вот так вот, да, вот так вот проще я к этому способу привык. Вот. Поэтому давай сделаем вот так. Всё, закомитили. закомитили. Вот опять же можно там и историю комитов тоже посмотреть. Она вот здесь вот находится. А так как тут что-то, да, прямо не очень. Вот вот эту консольку лучше вот сюда перенести, это будет намного лучше. Вот история комитов, опять же, как смотрели, вот мы видим, соответственно, что здесь у нас изменилось.
А вот теперь смотри, м по поводу, что мы не не разбирали, да, вот на предыдущем занятии. Это вот gitnor, вот этот файл, он очень важен, чтобы у нас ничего лишнего в GIT не попадало. Вот мы пишем Gitgnore. Git игнора. Так, добавляем его обязательно в GIT, то есть, чтобы он зелёным горел. И вот теперь мы указываем файлы и либо папки, которые не должны отслеживаться гитом. Ну вот смотри, вот здесь что напрашивается на мысль, да? У нас есть точка VF. Точка WF файл с окружением, с библиотеками. Как бы очевидно, что его не нужно комитить. Почему? Да. А как ты думаешь, почему? Ну вот почему не нужно? Вот если мы библиотеки устанавливаем, да, почему не нужно его комитить? Вот как ты думаешь, этот файл? Вот потому что если кометит, он же повторяется, по-моему.
>> >> Ну, не то, что повторяется, не то, что повторяется. Ну, вот смотри, представь, у нас там библиотека, мы установили библиотеку. Ну, я такой пример говорю, допустим, на 10 ГБ, да? Вот ты этот файл закоммитишь, и когда ты будешь в репозитории отправлять, вот эти 10 ГБ туда попадут. И вот скажи, это нужно вообще делать?
>> >> >> Даёт нагрузка.
>> >> >> >> Ну, нагрузка, да. И это как бы не имеет смысла. Почему? Потому что ты как бы все те зависимости, которые нужны для работы приложений, ты можешь локально у себя установить. Их не нужно тянуть в Gitрепозиторию. То есть как бы этого вот не надо этого делать, то есть потому что достаточно много весит. У тебя, во-первых, долго клонироваться будет, да, это время как бы тем не менее. И во-вторых, как бы ты по файлу, ну, специальному, который зависимости описывает, ты можешь восстановить потом всё, все библиотеки, которые тебе нужны. Вот. Вот это как бы имею в виду.
Так. Ну и вот теперь в Gitgnore мы давай добавим ENF. То есть вот виртуальное окружение, то есть вот этот файлf, мм, да, тоf. Ну и, соответственно, папку VF тоже может такое быть. Ну, это как файл. Вот смотри, IDE тоже нужно добавить в Gitignore папку, потому что она здесь в любом случае создаётся. То есть вот, если мы перейдём в IDE, вот, как видишь, она создалась. Вот её лучше вот так вот удалить сначала, да, чтобы она удалилась, короче, из гита, а потом она всё равно создаёт это папку создаёт именно по HRM. Вот, соответственно, ну и давай пока вот этого хватит. Там и ещё пайкэш, но нам это неважно пока. Всё, Gitnore обязательно коммитим. Коммитим его. Это важно. Вот комитим. закомители игнор.
Так, ну и всё, как бы, соответственно, м, то есть тут как бы, надеюсь, тут понятно. Ну, то есть и теперь как бы вот когда мы будем работать в дальнейшем, да, делать комиты, нс не будет попадать, то есть он всё как бы он в гиit игноре то есть как бы ничего страшного. То есть, если там даже что-то изменится. Вот смотри, я просто ради прикола создам какую-то её там, ну, какой-то файл, да? То есть обрати внимание, вот если я здесь создам какой-то файл там, ну, вот какую-то дичь я вот тут написал, э то он не попадает в этот короче не отслеживается гитом. А если я вот такой файл я его создам вот здесь вот, да, вот в в текущем каталоге создам, допустим, вот тут, то обрати внимание, он уже начинает отслеживаться гитом. Он уже как бы зелёным начинает гореть.
>> >> Вот. То есть то, что не отслежи не отслеживается гитом, горит оранжевым. Вот поэтому как бы имея в виду вот Git игнор, вот опять же вот создам папку там, ну, тест, допустим, назову. Она не в Git игноре. То есть, если я сейчас создаю какой-то здесь файл, вот, то он отслеживается. Вот, чтобы этого избежать, в Gitignгре я прописываю то, что тест там не должен отслеживаться папка. Удаляю её. Нужно заново это сделать. Вот и всё. И теперь как бы всё, что внутри находится, отслеживаться не будет. Вот это как бы важно. То есть, чтобы не тянуть лишние, скажем так, зависимости там и лишние файлы.
Вот. Так, э, о'кей. Ну, с терминалом мы говорили, да, как с ним работать. Я думаю, это помнишь, то, что открывается, и в дальнейшем ты там можешь, соответственно,
>> >> а, работать с этим.
Так, ну давай пока дальше мы к чему перейдём. Я всё-таки предлагаю нам уже больше. Ну, то есть в любом случае ты эти задания нужно будет выполнить, которые во втором, вот которые эти сейчас. То есть вот сделай обязательно этот домашнее задание.
>> >> Да, да.
>> >> Да, да, я сделал. Я тебя отправил даже.
>> >> >> Да. Ну вот, ну хотя бы вот, ну вот постарайся со второго, да, проработать, вот вот это сделать, инициализировать Gitпозитори самостоятельно.
>> >> >> >> Вот. Ну и полный вот рабочий цикл тоже вот задание четыре. Ну то есть сделать нужно обязательно. То есть так ты закрепишь этот материал. То есть запись будет, опять же, ты можешь пересмотреть, что вот я сегодня делал, как бы ты увидишь и постараться повторить подобно.
Вот. Да, давай тогда начнём. Сегодня я предлагаю разобраться с переменными, как планировали изначально. Ну вот, э, с переменными. Что ты вообще понимаешь под переменной? Вот что такое переменная?
>> >> Ну, переменны это без этого, по-моему, как это сказать, без разделения, что ли? Без это без деления, что ли? Как?
>> >> >> А без деления? А при чём тут деление?
>> >> >> >> Не, это без этого, ну, как переменные, как бы. Ну вот смотри, вот давай вспомним там алгебру, допустим, да? Вот переменная в алгебре, что означает?
>> >> >> >> >> Одно и тоже, по-моему, повторение.
>> >> >> >> >> >> А, ну не не А при чём тут повторение? Ну вот смотри, вот как бы есть, к примеру, некоторое число, да? Вот число, можно сказать, что это, ну, то есть вот число там 12. Вот мы как бы, когда говорим о числе, мы не говорим, что это переменное, потому что число - это конкретное значение. То есть 12, всё, оно никак как не изменяется. Вот. А если мы говорим, что, допустим, у нас есть некоторый x, ага. x² + x. Вот это у нас уже X - это переменная, потому что мы не знаем конкретно, что какой у него значение. Это некая такая абстракция, да, которая как бы, ну, там может быть всё, что угодно. Ну, вот как бы, да. А сейчас я вот тут добавлю там файл. М сейчас там 2026. Ну так 27 0326 и там variable там вот такой файл. Ну то есть вот, да, вот, допустим, там число 12. Вот 12 - это там, допустим, значение. Вот. А вот как, допустим, у нас идёт некая функция x² + x, да, там, ну, или уравнение там вот такое вот, то x - это переменная. переменная, да, потому что как бы у нас нету здесь конкретики, то есть мы как бы не знаем, что это просто выражение. Ну, допустим, даже вот идёт какой-то y там y + 10, вот y - это тоже это переменная, там z, там неважно, там буква А, да, то есть это как бы, ну, некоторая как бы вот такая вот абстракция, можно так сказать. Вот это как бы переменная. И как бы у переменной может быть как раз-таки и
значение быть, да? То есть она может там определённое значение, собственно, принимать, да? То есть там вот этот игре, он может быть там и двенадцатым, и там и четырнадцатый, и пятнадцатый, и так далее. Вот.
М. Ну и вот теперь смотри по поводу по поводу по поводу переменных. Вот мм если мы вот как бы говорим вот больше как бы про программирование, да, то переменная - это некоторые именованный контейнер, в котором мы храним значение. То есть вот давай вот даже запишем вот тут. Я напишу просто определение, да, что переменная, да, ты можешь, в принципе, не писать там в любом случае конспектом будет. Вот это именованный контейнер. Вот и подразумевается. Ну, то есть вот представь, что это некоторая волшебная коробочка, да, в которую ты кладёшь некоторое значение. А потом, к примеру, ты можешь обратиться к этой коробочке. Ну вот, допустим, представь шкаф. У тебя, допустим, на шкафу написано, что вот здесь лежат, допустим, там, ну или не шкаф даже, а некоторая там вот, ну, не знаю, такой шкафчик, где гвоздики там лежат. Допустим, здесь лежит гвоздик, там саморез, подписал его, да, потом ты как бы на этот шкафчик смотришь. Ага, вот здесь имя там саморез. Ты достаёшь, ага, вот саморез, как бы. Вот это уже значение.
Вот. А, то есть как бы и вот давай просто вот напишем переменную, к примеру, user. А, user, допустим, а, ну, вот user, э, допустим, Гриша. И вот смотри, здесь как бы что важно, да? То есть мы сдаём имя юзера и присваиваем ему через вот оператор равно как раз-таки значение Гриша. Вот. То есть как бы в этой переменной user правильно говорить, хранится значение Гриши. Вот смотри, другое там у него может быть значение. Допустим, у него ээ есть, скажем так, некоторый возраст у юзера, допустим, там 18. Вот это значит то, что у значе у переменной age значение равно 18. Вот. То есть вот как бы вот здесь имя переменное идёт слева, а справа после присвоения знака идёт уже значение переменной. Вот как бы вот это понятно, >> да?
Понятно. >> А вот теперь смотри ещё что важно, да? В отличие, опять же, там от разных языков программирования, а мы не указываем тип нашей переменной в Питоне. Вот именно в Питоне. Во многих вот, допустим, ну, далеко даже ходить не буду. Вот могу, к примеру, вот уже этот go язык программирования, да? И вот здесь уже, как видишь, явно описываются типы данных, которые у нас должны быть. Вот некоторая структура, там name, у неё http methods, string, string, вот это именно тип, описание типа. Вот есть у нас некоторая функция, она принимает там на вход string. Вот мы явно сообщаем, какой тип данных должен быть. В Питоне мы этого не делаем. То есть мы просто сразу пишем имя, переменное и значение, и он сам уже понимает, какого типа данных оно должно быть. Вот смотри ещё, что значит типы данных. А тип данных - это как раз-таки именно про, ну, категорию, да? То есть у нас есть, к примеру, строки, у нас есть числа, у нас есть там, допустим, числа с плавающей точкой, да? У нас есть, к примеру, boolean. Это либо true, либо false. Вот. Вот это именно типы данных. Вот опять же значение переменное, которую ты написал, можно в любой момент поменять. То есть вот, к примеру, там вот age можно потом сделать там равно 10, там потом можно там два. То есть в целом это а постоянно меняется. Так он говорит она. Ну это неважно. В любом случае переменную можно менять, и она будет меняться вот на каждом шаге. Я вот так вот посмотрю, да, запускаю скрипт. Так что он no such directory. Ага. А потому что ф у нас не активирован. Да, я вижу, я вижу. Так, ну-ка давай посмотрим. Можно тут быстро по-быстрому создать. Так, configure. Добавить новый интерпретатор. А так давай тогда создадим generate new. Ну, я просто создам, то есть вот этот пидоновские, короче, вот этот venv, чтобы у меня был здесь пидоновский интерпретатор. Всё, запускаю. Всё, работает. Ну вот, как видишь, переменные меняются, да, на каждом шаге. Вот здесь всё понятно, да?
Вот. >> Давай теперь с очень важным таким вот разберёмся. Это правило именования переменных. Вот это важно хорошо запомнить, потому что, ну, если это понять неправильно, потом будут ошибки. Вот. Давай назовём файл correcting. Вот naming - это наименование. Вот смотри. Мм, давай вот я напишу, к примеру, как нам стоит делать, а как не стоит делать. Ну вот, допустим, мм, можно именовать вот мы как у нас там user был age user. Ну давай вот так вот сделаем. А, допустим, вот user с маленькой буквы, да, мы указываем потом там Гришу, условно некоторое значение. Мы сейчас говорим именно про naming именно название самой переменной, не про её значение, а про вот название именно переменной. Вот так вот. Ok, да? То есть вот это ok. Вот вот так вот можно делать. Опять же, можно делать, к примеру, и там вот так, там, ну, не знаю, user Гриша какой-нибудь там, ну или, ну, ладно, user, как сказать, user, ну, или, ну, ладно, пусть будет вот user first. Окей. Это вот уже называется snake_case, да? Вот как бы так вот делать можно. То есть вот user first, допустим, там Егор, вот вот это ok, да? То есть никто так не запрещает. Вот опять же можно делать наименование переменной там с каким-то подчёркиванием, да? То есть вот, к примеру, там, ну, не знаю, там private, некоторые модификаторы доступа там или ещё что-то. Вот как бы тоже можно так делать. Ну и вот смотри ещё и ещё как можно наименовать. То есть и мы сейчас говорим про то, допустит ли Python интерпретатор такой naming переменных, потому что как бы он может и не допустить, если мы неправильно сделаем. Я покажу, как вот, допустим, можно сделать там, к примеру, ну вот у нас show user, а там, ну, давай назовём переменную my_name, там, допустим, my name is, там, к примеру, там некоторые Ваня. Вот. И вот так вот тоже можно делать, но смотри, в чём прикол. Так вот делать не стоит. То есть это запустится, смотри, это всё это как бы работает, всё окей, да? Но не стоит вот так вот делать именно вот такой вот стиль, потому что это не стандарт питона. То есть как бы в сообществе Python так не принято делать вот именно такой синтаксис через camelCase называется, то есть когда нижняя, то есть горбатый регистр. Вот так не принято Python делать. То есть это уже как бы не не идиоматично как бы вот так вот писать, да? А вот вот так. Ну то есть так принято. Ну то есть вот как бы опять же вот my_name там вот, допустим, вот вот так вот, то есть если в сравнении с этим, вот с этим вот так вот правильнее будет в Питоне. Опять же, вот, допустим, вот показываю тебе другой пример другого языка, там программирования там, ну, который написал. Вот. И вот это у нас как бы язык программирования TypeScript. М, вот здесь как раз-таки мы можем видеть вот этот camelCase, горбатый регистр, да? То есть не что никогда он вот так вот идёт. Вот, допустим, на TypeScript вот так вот не пишут. Так вот нельзя делать. Ну, то есть можно, но не принято в сообществе. А вот идёт именно вот такой горбатый регистр. Вот в TypeScript так можно, в Питоне так нельзя. Вот. Вот это понятно, >> да?
Понятно. >> Вот. То есть это не не идиоматично будет. Вот теперь смотри, вот не ok уже с точки зрения опять же работоспособности. Вот как работать не будет? А вот не будут работать вот так, допустим, там, к примеру, если мы ставим число перед переменной, там, к примеру, user там Гриша, всё, это уже не ok, это уже работать не будет, то есть это уже вызовет ошибку, когда интерпретатор, соответственно, прочитает эту строчку. Вот. И ещё, смотри, запрещён дефис и пробел. То есть, допустим, если написать, к примеру, там, м, не знаю, там My там user, там my user через пробел там Гриша, да, тоже работать не будет. Вот. Ну и и, к примеру, там My-User через дефис тоже работать это, естественно, не будет. То есть будет ошибка, запускаю программу, а, вылетает ошибка, да? То есть это вот нельзя делать, короче. Вот так вот. >> Ну, получается маленьким буквами, да, если >> А вот я вот так вот написал. Вот смотри, вот все случаи, которые вот здесь написаны, так можно делать, но не идиоматично будет, если ты будешь делать именно вот как вот здесь вот написано через camelCase. То есть правильно разделитель между словами ставить нижнее подчёркивание и дальше с нижней буквы идёт. Вот. То есть, если идёт какая-то длинная фраза, типа, ну, вот просто пример my_first_name_is, вот там Гриша условно, то вот правильно будет вот так, то есть вот так вот. Ok. Вот не ok уже компилироваться не не то есть этот не будет он правильно отрабатывать интерпретатор. Соответственно, если у нас идёт вот вот там дефисы идут в переменные, пробелы и цифры в начале числа, вот так вот делать не надо. Вот. И как бы вот этот camelCase синтаксис он вот именно в стандарте PEP8. Вот есть как бы стандарт Python PEP8. Вот как бы на официальной документации можно посмотреть, почитать. И вот здесь как раз-таки всё описано, да? То есть вот как правильно именовать, да? То есть вот тут описывается, да, что там добавление отступов там, ну, вообще это как бы прямо стандарт стандартом. Вот, допустим, тут вот wrong видим, что, ну, вот нельзя тут добавлять вот какие-то дополнительные отступы, да, когда мы пишем там, а, массивы, там, объекты разные. Ну, вот, короче, да, вот это надо иметь в виду обязательно.
Так, а, хорошо. Вот, давай теперь поговорим про основные типы данных. Про основные типы данных. А у нас как бы есть целые числа, строки. Вот. Ну, давай поговорим про int. Так я его назову. Python. Вот смотри. Мм, опять же, да, как я вот сказал, вот здесь вот в примере, когда я писал, питон автоматически определяет тип данных. И если ты написал, допустим, там число, он автоматически понимает, что это int. Вот. И вот первый тип данных, да, которому стоит сказать, что это у нас вот int - это численный тип. То есть как бы, к примеру, там, ну, там age, условно, там, к примеру, ну, можно сказать, что там баланс на аккаунте, там, я не знаю, вот. И, допустим, если мы выведем print(age). Вот видно, да? >> Да, видно. Вот, то есть, если мы посмотрим, да, чему равно, вот, соответственно, у него вот такой вот тип. Ну, давай задебажим даже посмотрим. Вот, как видишь, у него показывает int, да? То есть вот, то есть это именно integer, целочисленный тип. Вот, соответственно, да, то есть, ну, это просто целое число. Вот как в математике, там 1 2 3 4 5 6 там -1 и так далее. То есть отрицательные числа там тоже могут быть. Вполне нормальная история. Вот дальше у нас как бы есть этот строка. А, ну давай лучше float сразу скажем, чтобы числа как бы впереди шли. Вот float - это уже м с плавающей точкой. С плавающей точкой число тип. Ну, то есть как бы здесь уже вот, к примеру, там некий баланс может там быть там вот столько. Потом там, к примеру, ну, не знаю, там некоторые коэффициент там вот, может быть, там, к примеру, два, ну, 0.25. Вот это как бы уже с плавающей точкой. Ну, как бы знаем, да, в математике это вот дробное число называется, рациональное число. Хотя рациональные числа там они целочисленные включают. Ну, короче, с плавающей точкой. Вот, можно сказать, вот когда деление у нас идёт, вот это у нас про это. Это тип float. Вот здесь понятно, >> да?
Понятно. Ещё очень важно, что дробная часть, она именно точкой отделяется. Не, вот так, вот так вот делать не надо. Вот это уже неправильно будет. >> То есть, то есть не запятую, а всегда точку. >> Вот теперь как бы строки, да? Строки, ну, это как бы вообще вот в Питоне очень круто работать со строками. Это прямо как почти в JavaScript. Хотя в JavaScript мне намного всё-таки лучше нравится. Вот. Э, но вот в Питоне м как бы именно круто, что у него очень много там встроенных методов для работы со строками. То есть, но это ещё попозже мы дойдём. Не сразу пока. Вот, допустим, можно делать строку там name = "Гриша". Вот там, к примеру, условно, что ещё можно сказать, там name_car, допустим, car. У него там машина там, я не знаю, там Toyota условно, да. Вот. Ээ, ну, то есть это как бы именно переменная, когда мы записываем текстовую информацию, там, как зовут человека, там какой у него город, какой там, к примеру, какая-то конфигурация, параметры конфигурации URL там, да, то есть вот, ну, то есть URL этот http, ну, короче, адрес в этом в когда мы заходим на сайт, да, вот адрес вот тоже может Может быть, там, вот, к примеру, там вот так вот можно записать URL = "https://google.com". Ну, это как бы строка, очевидно. Вот, собственно, да, вот такие вот дела. Вот ещё смотри, мм, можно опять же ещё кавычки-то тоже вот разные ставить. То есть есть вот эти. Нет, таких тут у нас нету. у нас есть одинарные кавычки, но опять же, что важно, да, а лучше в вот в рамках определённого проекта использовать один тип кавычек, да, то есть обязательно должен быть вот линтеры там, которые, ну, то есть, чтобы всегда было единообразно, то есть не надо, чтобы это было как бы по отдельности. Ты вот тут, допустим, ты пишешь вот так, тебе захотелось, вот здесь тебе захотелось вот так вот. не надо. То есть нужно, чтобы единообразно было. Вот. И ещё давай объясню, почему два разных типа кавычек есть для строк. А всё дело в том, да, что некоторая строка может содержать себе кавычки. Ну вот смотри, допустим, идёт у нас, к примеру, там description, да, описание. И, к примеру, можно сказать, что вот слово "слово", к примеру, там, не знаю, там "компьютер", мы, к примеру, в кавычку хотим завернуть, означает там то-то, то-то. Вот. И вот как бы вот это уже правильно, то есть кавычка будет вот, то есть она никуда не пропадёт. Вот. То есть в целом мы когда хотим, скажем так, вот именно такие кавычки использовать. Вот. Но смотри, если мы уже там добавим другие кавычки, то есть вот эти двойные, то вот уже начинаются приколы, да? То есть вот, ну, всё, как бы ты уже не можешь с этим ничего сделать, то есть ошибка уже будет. Вот поэтому как бы нужно именно вот использовать так. Ну, это вообще убрать надо, да? То есть вот, ну, это, короче, позволяет вот использовать другие кавычки. Так, здесь, надеюсь, всё понятно, да? >> Да, понятно. >> Угу. Ну и вот теперь этот Так, это у нас погоди, давай вот так подпишем обязательно, что это строки str - строковый тип данных. Ну и boolean теперь вот bool он называется, но bool - это как бы у нас уже логический тип, то есть это истина, ложь, то есть булево значение. Ну булево вот как бы есть булева алгебра, да? Ты же ты же, наверное, проходил вот если там в университете вот, наверное, было, да, такое, ну, алгебра, закона алгебры в логике логическая или и не было такого. >> Нет. Ну, смотри, как бы, ну, можно вот как вот подумать, да, вот есть как бы вот э такая наука, как формальная логика, да? То есть как бы есть у тебя некоторое утверждение, некоторые утверждение, что ага, вот, допустим, человек говорит: "Земля круглая". И смотри, в чём как бы прикол. Утверждение, оно может быть либо истинным, либо ложным. Третьего не дано, да? То есть либо true, либо false. Вот как бы это про это. То есть не может быть какого-то третьего там промежуточного состояния. То есть либо да, либо нет. То есть Земля либо она круглая, либо она этот там некруглая. Вот. Ну, то есть вот как бы это именно логический, да, такой тип вот, которая как раз-таки означает там истинность того или иного, скажем так, выражения. Вот. И опять же вот его можно, к примеру, записать там, к примеру, там is_has_car, допустим, там true там is_married, ну, к примеру, к примеру is_student, ну, к примеру, к примеру is_employed, допустим, там false. То есть он как бы записывается через вот э ключевое слово True, да, либо через False. С большой буквой обязательно пишется, не с маленькой, а с большой. >> Вот. Ну вот смотри, ещё что важно, да, что оно не только так может быть записано в логическое выражение, то есть оно может быть записано через ещё другие операторы, допустим, там вот, а, ну, к примеру, к примеру, там, допустим, допустим, допустим, ну, может быть вот такое, да, то есть is_adult = age >= 18, вот, к примеру, вот, допустим, там либо true, вот можно использовать, к примеру, такой оператор, там False, так, один, по-моему, нужно и, допустим, там больше там десяти. То есть можно объединять как бы вот эти логические операции, да, и это всё в итоге вот это выражение, оно либо будет true, либо false. Ну, то есть одно из двух. То есть это как бы можно делать определённые условия. То есть, допустим, что вот, к примеру, ну вот user некоторые, да, то есть user.age, там у него возраст, к примеру, там 15 лет, да, и можно ли ему там, допустим, пройти? Вот можно проверить, что if user.age < 18, то есть можно ли ему в клуб попасть. Ну вот как бы он не может туда попасть, потому что 15 меньше либо равно, чем 18 - это false. Ну вот, соответственно, переменная is_allowed принимает там false значение. Вот, соответственно, да, то есть, вот как бы таким вот образом, да, то есть вот м так записывается логическое выражение. Вот тут всё понятно? >> Да, понятно. Вот, то есть как бы, да, тут вот больше вот именно, ну, то есть очень важно как бы понимать вот эти таблицы истинности, да? Вот это очень прямо важно. Ну, я что имею в виду? Э вот есть как бы этот, ну, это просто вот тебе вот я настоятельно рекомендую вот это вот запомнить, вот эти таблицы истинности. А, ну то есть понимать вот разницу между or и not, потому что как бы это, ну, понятно будет потом, как вот что даст одно выражение, то есть вот как проверить, что оба высказывания истины выражения, либо оба там ложные, да? И вот как раз-таки м вот есть вот, допустим, там таблица истинности, да? То есть вот есть, обрати внимание, вот 0 - это ложь, да? 1 - это true, то есть истина. Вот, допустим, если у тебя два высказывания, они ложные, да? То есть отрица, ну, отрицание, допустим, а, высказывание вот это not A, это будет 1. Ну, очевидно, да, что Земля круглая. Допустим, утверждение, что Земля круглая, обратно ему - это Земля некруглая, то есть не подставка не добавляется. Вот конъюнкция - это когда уже у нас, то есть оба высказывания должны быть истинным. Ну, естественно, как бы если not A истина, not B истина, то и как бы оба они не не истинны. Вот. Ну, то есть это логическая И, что оба они должны быть, если одно из них неистино, опять же, вот как вот здесь вот, но как бы они не могут быть истины, везде нули. А вот если оба истины, да, то есть и то истина, и это, значит, будет 1. Вот дизъюнкция - это уже как бы когда одно из должно быть истина. Вот если оба ложные, значит и дизъюнкция их будет ложная. То есть вот, как видишь, на выходе мы получаем ээ либо 0, либо 1, то есть либо true, либо false. Вот. Э ну вот тут ещё идёт дизъюнкция строго. Это, в принципе, это неважно. На это вообще пока забей. Вот самое главное, это, я повторюсь, это вот эта вот часть. Вот, вот это вот очень нужно хорошо знать. Вот. Давай я тебе в телегу даже отправлю. Алло, да, слышно меня? >> Да, да. >> Вот. Ну, надеюсь, да, тут понятно. Вот эти таблицы истинности, вот это нужно прямо очень хорошо запомнить. То есть вы то есть когда высказывания идут, отрицание одного из высказывания, то есть что обратное будет? Конъюнкция, дизъюнкция. То есть это очень важно вот это вот прямо запомнить. Ну то есть надеюсь то, как я это объяснил, это как бы понятно в целом, да? То есть конъюнкция - это И, дизъюнкция - это ИЛИ, то есть или то истина, или или это. А вот когда конъюнкция, это должно быть оба истинны. Вот тогда будет истина. Вот. Ну это, в принципе, не так сложно. Так. А смотри, вот по поводу ещё проверки функции, да? То есть вот есть некоторая такая встроенная функция type, которая в Питоне. Проверка типа. Проверка типа функция type. Метод type, можно так сказать, да. И вот, чтобы проверить опять же тип, вот мы можем взять, допустим, там вот user. А тактактак тактак. Вот user там Гриша, к примеру, там float какой-то некоторый взять. То есть можно проверять, э, какого типа данных определённая переменная. Вот. И это как бы важная штука, потому что, ну, вот, допустим, там is_married = True. Вот. Ты вот, чтобы проверить, нужно ещё напечатать обязательно. То есть print должен быть. Вот. И можно вот посмотреть там type(user), type(age), type(balance) и type(is_married). Вот как бы, то есть мы в print заворачиваем type. Ну, то есть, чтобы он напечатался, да, потому что если мы просто type сделаем, то есть если вот так вот будет type(user), то, естественно, ничего не выведется. Ну вот так я запущу скрипт. Ну вот ничего не вывелось, нужно именно вывести, потому что он возвращает строку type, соответственно, да. И вот мы можем видеть, какого типа является, то есть не строку, а этот соответственно класс. А да, то есть здесь вот можно посмотреть информацию. Вот так. Угу. Ну то есть это просто проверка типа. Вот теперь смотри ещё что важно. Преобразование типов нужно уметь делать, да? То есть это тоже такая штука важная, чтобы из одного типа перегнать в другой. Ну потому что согласись, что бывает как бы, ну вот ты, допустим, Excel читаешь, вот смотри, даже из нашего примера, ты читаешь Excel-файл. А что, если в этом Excel-файле там, допустим, какой-то вот расчёт какого-то кредита, там оказались, что строки, то есть как бы ты, ну, если там строки, допустим, вместо чисел, ну, то есть числа записаны как строки, ты что, больше с ними не сможешь работать? Да нет, конечно, тебе нужно взять и преобразовать там в число. Вот. И это, допустим, там transform_types, ну, допустим, transform types, вот так назову. Вот, чтобы, допустим, как перегнать тип. Ну вот есть функции, а в конспекте, в принципе, это есть. Вот, допустим, там нужно преобразовать, допустим, число, а, к примеру, ну, допустим, есть переменная там age, как строка, она записана, вот, допустим, там "18". И чтобы сделать её числом, нужно вызвать функцию int(). И вот как раз-таки теперь у тебя уже будет, соответственно, вот это, ну, как число уже будет, то есть видишь, у него уже класс INT, да? То есть я проверяю его тип. Вот, соответственно, преобразование прошло. Вот. То есть как бы вот так это делается. То есть age = int(age). Я вот беру, делаю int. Ну, соответственно, как бы с float, с string, с boolean. Всё то же самое можно сделать. В принципе, сейчас можно это пока не вдаваться сильно в подробности. Ну вот как бы А, ну вот смотри, ещё что важно, да, вот я тебе не показал. Вот важно с string, да? То есть, допустим, у тебя есть некоторая там, ну, некоторое число вот такое, да, тебе, допустим, его захотелось строку там преобразовать. Ну, допустим, там number = 123. И str(number) как раз-таки вот сделает вот из этого уже строку. Вот это уже будет строка. Ну, то есть вот таким образом можно строку преобразовывать. То есть прямо так вот. Ну, короче, такая возможность есть. Вот это важно иметь в виду, что ты можешь преобразовывать типы так, как тебе это нужно для твоей задачи. Вот. И это как бы это поле полезно. Опять же, там можно и для конкатенации строк тоже как бы это будет полезно. Вот, собственно, да. Мм, собственно, да. Ну, смотри, а пока вот базово в принципе-то всё, да? Вот будет тебе домашнее задание. Я тут его написал. А вообще вот, знаешь, вот круто было бы. Вот давай даже покажу. А так вот тут задание, как бы я тебе его ещё выложу на GitHub. Вот тут смотри. Вот будет здорово, да, если ты в целом вот сможешь сделать калькулятор. То есть напиши скрипт, который считает ключевые финансовые показатели для клиента банка. То есть, смотри, у тебя идёт имя, ну, в виде строки, возраст, как целое число, ежемесячный доход, расходы, суммы кредита, допустим, дробное число, срок кредитов в месяцах и процентная ставка там и так далее, и так далее. И вот если ты, тебе нужно будет взять и вычислить всё вот это, то есть платёж там по кредиту, >> да, по вот этим всем формулам. То есть берёшь вот, допустим, доход, вот доход у тебя вот тут он. Потом ставка в месяц. Ага. Вот этот процентная ставка. Вот тут у нас идёт вот возможно ли одобрить кредит, да? Ну вот скоринговые твои модели, да, кото вот которыми ты занимаешься, вот как бы ну немного вот похожее. Тут как бы не надо никакую сложную логику, просто берёшь и вычисляешь вот переменные как бы ты же помнишь, как складывать, да? Или >> Да, да, да. >> То есть вот, допустим, если тебе нужно, к примеру, вот у тебя есть переменная A, там переменная B, ну так вот напомню, вот, чтобы их сложить там, да, то есть там C = A + B. То есть разделить, умножить там, ну, то есть все стандартные операции. Вот, соответственно, да, ну, ты уже это делал, поэтому как бы я думаю, ты с этим не сложно будет с этим справиться. Вот как бы вот такой вот пример выходных данных. Вот именно будет вот такой вот. А, то есть, ну, соответственно, мм, все вот, короче, параметры должны быть вывести через функцию print. Вот. >> Понятно. >> Понятно, да, задание я тебе его отправлю, >> собственно, сделаешь там до понедельника у тебя там нормально будет времени. >> Да, до понедельника всё сделаю. >> Вот, собственно. Да, ну вот так вот позанимались. Я надеюсь, тебе стало тут больше более-менее понятно, да? То есть вот какие-то у нас есть основные типы данных. Смотри, типы данных ещё не все, да? Потому что мы разобрали, ну, по сути, такие примитивы, то есть примитивные типы и ещё сложные, то есть, ну, не сложное, а как бы уже как бы сказать динамический, м, ну, как бы не динамический даже, вот больше, я бы так вот сказал, ссылочные типы, да, то есть объекты, ключ, значение, вот, то есть более, скажем, сложные типы. Вот до этого как бы ещё дойдём. А так сейчас пока главное эти здания проработать вот и сделать его. Вот. Да, такие вот дела. Тут есть вопросы какие? >> Нету вопросов. >> Нету. Так, ну всё тогда, да? Давай тогда до понедельника. >> Спасибо за уроков. >> Да, да, запись тоже. >> Давай, пока. Спасибо большое. Пока.