Вы находитесь на странице: 1из 14

РЕФЕРАТНАЯ РАБОТА

Простейшая программа на питоне это пустая программа она будет


содержать print она упоминает функцию print и все на это уже корректная
программа следующая программа которая ее уже вызывает вот такая
программа вы заметите что я делаю такие вот поэтапно я потом расскажу
почему это делают поэтапное написание потом что ездил вот я сейчас вот так
вот буду ее запускать она будет печатать на пустую строку enter перевод
каретки если я спешу туда 2 кавычки 1 раз то будет все тоже самое но зато
теперь мне есть кавычки в которые могут что-нибудь туда вписать туда
например hello- о и у меня первая программа которая печатает hold если
запустить однако хотелось бы чтобы программа могла что-то запомнить
память как-то использовать компьютеры в питоне мы можем использовать
память компьютера очень легко но переменных нет точнее так а мы можем
называть то что сейчас вы увидите переменными что имею в виду я имею
полное право взять и написать x равно hello world вот так вот eprint x
очевидно что то что я тут написал сейчас она эквивалентно тому что выше с
точки зрения текста до очевидно очевидно x это переменная x это имя x это
имя то есть есть имена а есть значения можно сказать объекты но сейчас не
буду столь громкое слово объекты просто может сказать объект короче есть
значение homeworld которой лежит где-то в памяти но согласитесь когда
происходит print hello world должно должен же быть где-то такой объект
строки hello world да но просто он не именованный а теперь я в начале создал
ему имя и у меня появилось имя x которое ссылается на хеллоу ворлд это
объект строки ну или значение строки и у него есть тип у него есть тип этот
тип str как мне узнать его тип напечатать слова type я могу взять и спросить а
какого типа этот объект print type x зачем нужно давать объектом имена дело
в том что питон он не засоряет свою память знаете как студент который сдал
забыл выучил сдал забыл вот примерно так он напечатал хеллоу ворлд и этот
объект больше не нужен не нужен выкинуть то есть ниже по программе hello
world а больше нет а реально освобождает память выкидываем а если я хочу
что-то за держать в памяти ты должен поставить на это именно ванную ссылку
понятно вот соответственно если я задал объекту имя то есть вот это вот в
каком-то смысле а сейчас обращусь к pascal pascal оператор присваивания
вот : равно было бы еще красивее вот так вот вот так вот как бы я вот вот туда
запихиваю но в случае с питоном никакого копирования оператор
присваивания не подразумевает оператор присваивания в питоне это ссылка
то есть это как раз стрелочку можно было бы наоборот листья начинают
ссылаться на понятно причем есть некоторая дополнительная тонкость есть
некоторое дополнительно тонкость какая дело в том что справа справа может
быть не просто объект а может быть арифметическое выражение то есть там
может быть что-то такой x равно 1 + 2 + 3 умножить на 2 в этом случае
действия интерпретатора питон будут следующий он в начале вычислит вот
это выражение для этого ему потребуется временные объекты не именованные
2
которые тут же умрут как только вычисления закончится их сожрет сборщик
мусора есть такая часть интерпретатор который занимается чисткой памяти
называется сборщик мусора и он все объекты на которые ссылок больше нет
сжирает понятно так вот временные вот объекты 123 они будут существовать
во время вычисления после вычисления возникает объект 9 объект 9 типа int
самое то интересное что я тут нарисовал как будто это отдельная программа
теперь давайте сотрем вот это дело сотрем а пусть это будет единой
программой x равно hold я уберу эту стрелочку x равно hello world print x print
type x он здесь я напишу так лишь о тачкой это комментарий то есть я пишу
как комментарии это не нужно писать но я предсказываю что питон
напечатает в этот момент именно вот это здесь он напечатает стр тон там
класс стр напишет они важны стирка which keeps tarkett а что здесь
произойдет паскаль сказал бы в дан или все и плюс плюс сказал бы здесь так
нельзя подсказал вы чего x это строка а вы в него число кладете понимаете так
нельзя сказать скажет вам 7 паскаль или кумир язык со строго из статической
типизации от при выкинуть из головы эту фразу короче в питоне x не привязан
к конкретной области памяти мне не нужна числовую числовое значение
впихнуть в объект строки нет жизнь по-другому будет в этот момент вот
вычислили получился новый объект 9 типа int а потом выполняется операция
связывания имени и объекта вычисленного то есть x связывается с новым
объектом естественно старая связь теряется этот объект строки хэллоу
остался без ссылок на него и что произойдет сборщик мусора придет и объект
выбросить из памяти больше хранить его не требуется ясно тем не менее
несмотря на вот эту сложность который хочется объяснить сразу чтоб вы
понимали отличие она сыграет свою роль тем не менее может возникнуть в
начале ощущения что в питоне работает типичный оператор присваивания ну
давайте с вами выполним какой-нибудь простейший алгоритм на питоне какой
самый простой алгоритм который учат в школе меньше еще проще то есть ну
а мы может быть у вас это будет лабораторной работе по моему гипотенузу
посчитать нет йемен из таких вот алгоритмов которые потом играют это
обмен переменных значений вот давайте с вами возьмем две переменные а
равно 2 вася получил 2 b равно 5 маша получила 5 давайте поменяем их
значениями да что я должен для этого сделать ну вот есть классический прием
да я я белят для всех остальных кто не вдруг не знает может кто-то не знать да
я такой образно представьте себе что вас два стакана в одном вода в другом
молоко вам надо поменять их содержимым вы будете переливать вот это сюда
да у вас потеряется короче вам нужно вылить из 1 стакан вы берете 3 пустой
стакан выливаете туда молоко этот стакан в случае с там си плюс плюс это
копирование то есть вас и там и там молоко на самом деле не опустил да а
потом вы воду выливаете сюда раз этот стакан опустел и молоко переливаете
туда то есть обмен через третью переменную на то есть классический вариант
я ее назову не ц а п м п от слова темпуры временная темпы равно а то есть я
3
что сделал я а перелил в темп и а теперь tmp имеет такое же значение как а в
случае с питоном ссылается на тот же самый объект теперь а я могу присвоить
значение b рано и затем я говорю а теперь vb из временного стакана так где
молоко побывала после этого временная переменная мне не нужно но так
устроены языки программирования так устроит частности питон что ниже по
тексту этот темп и останется висеть это имя не пропадет вот это называется
обмен двух переменных через третью а вот это вот я ему конкретно выделяя
конкретный его вот он три строчки там это через через одну дополнительную
переменную дополнительную переменную а теперь давайте чуть-чуть
пофантазируем чуть-чуть пофантазируем а если я а вот два стакана а мне не
жалко стаканов давайте еще два пустых стаканов я беру 2 стакана давайте их
перед ними поставлю спереди я беру первые два стакана полное на их накрест
выливают туда два пустых беру эти два теперь уже полных стакана и
выливаю их в эти два что у нас получилось обмен двух переменных через две
дополнительные переменные а давайте напишем его через две дополнительные
переменные то же самое а равно 2 b равна 5 теперь содержимое темпы один
tmp 2 поехали темпы 1 равно b темпы 1 равно а это вот на кресте делают mp2
равно а теперь что а равно темпы 1 b равно темпы 2 все окей все понятно
можно так можно зачем сейчас поймете теперь смотрите я скажу вам еще кое-
что про оператор присваивания оказывается в питоне существует кроме
традиционного обычного присваивания еще трамвайная сейчас помню как он
называется называется вылетела его ошибочно называют множественно на
самом деле это присваивание каскадное по моему каскадная правильный
термин я не уверен смысл следующий я могу взять и присваивать вот так x
равно y равно z равно нулю понятно в этом случае все три имени будут
указывать на один и тот же объект здорово ну компактном не на занулить
сразу кучу переменных я буду все все плюс плюс это кстати тоже а есть такая
это хороший вопрос и во все остальные сейчас не очень понимают мы про него
обсудим еще про списке но я вам отвечу дело в том что неизменяемый тип int
tippins неизменяемы я не могу сказать пятерка да извини свое состояние five
там незачем и дать искать пятерка стань тройкой понятно а в тот момент когда
я говорю x был равен 2 а теперь горы x равен 5 в этот момент происходит
перри связывания то есть я изменить могу то на что ссылается имя а сам
объект в момент когда он существует он всегда таким останется поэтому через
ссылку на целое число впрочем и на вещественную то же самое изменить
другую ссылку содержание другой ссылке просто нельзя потому что в
принципе нельзя изменить значение объекта объект каким создан такой он и
остается до момента вытирании сборщика мусора про это будет подробнее все
остальные дождутся этого через инъекций то не очень короче это первый
вариант так называемого множественного присваивания но она не рез на
потому что в объекта раскладывается одно и то же значение а вот то что на
самом деле называется множественным присваиванием они каскадным это
4
каскадное мы с вами отработаем если можно без перерыва потому что в
начале потеряли зато технических моментов время каскадное присваивание а
есть реально множественно она выглядит следующим образом x , y , z равно
1 , 2 , 3 это множественное присваивание в этом случае существует такая
штуковина как кортежи кортежи пупочка кортежи переменных ну имен но я
их называю переменными по традиции кортеж переменных и кортеж значений
и в этом случае у нас каждая смена каждое значение отправляется в
соответствующую переменную понятно то есть опочка и создал сразу целых
три имени каждая своему значению а теперь возвращаемся в питоне работает
это это множественное присваивание внимание а давайте темпа 1-2 сразу
засунь и был каким образом бмп-1 , бмп-2 а давайте сделаем так сейчас
секундочку да овцы проект mp1 , mp2 равно b , а да ясно а эти две строки я
тоже сделаю одним присваиванием я а и b задам темпы один tmp 2а , b равно
mp1 , mp2 а вот эта самая фишка питона который я и объяснял
последовательно чтоб точно все поняли что она из себя представляет а
оказывается что смотрите я создаю временный кортеж из двух имён зачем вы
мне нужен если действительно правая часть этого а левая а.б. то есть я могу
просто написать a , b равно b , а обмен двух переменных некоторые питание
ст и думают что это обмен без третьей переменной над неправда это обмен
через временный кортеж то есть через две дополнительные фактически
перемен а ну как только вы числится это выражение карт кортеж исчезнет при
этом самом деле кортеж представляет себя исключительно ссылки на эти
объекты то есть сами объект не копируется времени на их копирование не
тратится в этом нет внимательно посмотрите не будут пятерка дело в том что
вот это процесс происходит как бы одновременно это можно сравнить с двумя
блинами на двух сковородках с водой с водой молоко мне сложно написать
две сковородки с для блинами я раз их подкинул и накрест поймал понятно об
поймал все вот такая вот фишка так нам на двигаться дальше арифметические
операции в языке python давайте начнем с самой высоко приоритетной
арифметической операции 1 по приоритету арифметическая операция это но
вы наверное знаете что унарные операции они более высокого предмета чем
бинарные так вот возведение в степень x в степени y как это записывается на
языке питон но я вот так вот тождества эта математическая запись а тут на
языке питон напишу x в степени y записывается так это x в степени a
умножить умножить y той двойное умножение это возведение в степень
обратите внимание что возведение в степень работает не только с целыми
степенями если вы хотите вычислить корень из 3 квадратный то вы можете
сделать так 3 умножить умножить 0.5 я по традиции информатик of нолика
перечеркивать чтобы отличать а букву понятно да 3 в степени то есть это что
такое это корень из 3 ясно так а да еще одно замечание а если я хочу сделать а
в степени b в степени c а в степени b в степени c как мне это записать как мне
надо ли мне расставлять скобки не надо в питоне возведение в степень
5
является операцией которая вычисляется справа налево то есть при прочих
равных у нас в начале будет выполнена операция правая а потом левой то
есть вот эта операция она будет выполнена 1 а вот это уже второй понят то
есть расстановка скобок которая возникнет и результате где-то должны быть
тут цветные да не пожалели для нас увы с собой приносить надо цвет мет так
цвет мел тоесть короче вторая операция по приоритету это унарный минус про
него скучно говорить но тем не менее у него следующий при ждите до минус x
записывается как минус x кстати есть унарный плюс то есть которая просто
ничего не значит он исчезает и все дальше следующая арифметическая
операция по приоритету это умножение и деление они имеют одинаковый
приоритет а теперь внимание в питоне есть одно умножение и два деления на
3 3 3 деления значит так умножение но x умножить на y записывается как x
звездочка y но вот это классическая для клавиатуры звездочные умножение
так x разделить на y но я вот так вот математически двоеточием напишу как
это записывается на питоне x разделить на y здесь важное замечание если я
делю двойку на тройку то что я получу у меня это число целое этот объект
целое число этот объект целое число но с точки зрения математики 2
разделить на 3 мы выходим из класса целых чисел и попадаем в
рациональный ну в питоне мы не различаем рациональные и иррациональные
потому что иррациональные в компьютере сохранять ну практически
невозможно да это нужно супер какие-то вещи придумывать есть числа с
плавающей точкой подробно сейчас пока не будем про них дано в результате
возникает число собственно 0 66 66 до в которого там 15 знаков после запятой
хранится примерно и она имеет тип флот карте дробная понятно это
нормально и правильно правда логично в отличие от си или паскаль хотя в
pascal по моему примерно так а теперь вопрос вот какой а если я хочу реально
целочисленное деление то есть то что в pascal называется div и моды но
поскольку мне сложно будет сейчас вот математический символ сюда вот
притащить я вам напишу как раз на pascal div и модом давай я это дело уберут
деление x div y x dimm y с отбрасыванием остатка целочисленное деление
например 16 разделить на 3 но должно получиться 51 вас так что у нас
получается как это записать это записывается двойным делением x разделить
разделите дэррик вот этот оператор это деление с отбрасыванием остатка но
естественно нас может интересовать и сам остаток xmod y x-man y
записывается как x процент y x процент y понятно замечание ну во первых
все эти четыре операции которые здесь упомянуты имеют одинаковый
приоритет и читаются слева направо т.е. если скобок нет то он будет их в мид
ну не так вот справа налево 123 тыс по порядку выполнять то есть если вы
хотите интерпретировать выражение например а умножить на b разделить на
борт а разделить на b умножить на c то его интерпретация выглядит
следующим образом есть два варианта восприятия этого да это как а разделить
на b c до или а разделить на b умноженное на c кто за первый вариант кто за
6
второй вариант ну у вас все не подвело вы наверное поняли да что операции
будут выполняться последовательно вначале левая то есть мы в начале
вычислили получили результат и только потом домножаем на c ясно ок а ну
это же самый вот эти операции того же приоритета до вот этого двойной
деление процент еще одно замечание тоже очень важна и касается она
отрицательных чисел дело в том тут есть кто-нибудь кто знает теорию группы
и хотя поведение в тюрьму нет но так можно ожидать конечно ну в общем
есть такая штука как группа по модулю какого-то числа вот есть эти целые
числа а есть целые числа по модулю пять ну давайте так целые числа по
модулю 10 что имеется в виду мы какие-нибудь два числа например
складываем а потом их по модулю 10 но я сразу на питонов скам понятно то
есть мы все время остается в рамках десятки а точнее апнули остатка в десятке
то есть от нуля до девяти или можно так сказать что у меня есть вся ось и я эту
ось я эту ось а еще называть модуль вычетов по модулю есть ли группа
вычетов по модулю 10 соответственно мне есть числа 012 давайте я поменьше
и делаем вместе 534 все больше остатков быть не может да то есть вот это
допустим и а все остальные что делают 56 если результат операции вылезает
куда то туда то мы его параллельным переносом переносим сюда например у
нас два плюс четыре в этой группе скоб получается 6 по модулю пять это один
значит у нас результатом является 1 ну вы когда-нибудь вы узнаете теорию
group но смысл в том что параллельно тут перенос да он он бывает очень
важен в нем там для шифрования эти модули вычетов используется группа
вычетов по модулю короче вопрос вот какой аж как же с отрицательными
числами быть а что если у меня возникает ну давайте сейчас уточню нибудь
отрицательный возьмем например -12 процент 10 здесь есть два подхода 1 мы
как бы минус за скобку выбрасываем мы говорим ну на отразим вот это вот в
обратную сторону буду говорить 12 по модулю 10 но если 5 делил то что было
бы я бы сказал это дело будет -1 так вот это было бы минусов внимание сейчас
пишу неправду до -12 в этом унарный минус да он более высокого приоритета
поэтому скобки но я поставлю скобки чтобы вас не возникало сомнений -12
процент 10 это у нас что -2 правильно ну как же остаток дело в том что один
умножен а прошу прощения -1 минус 1 умноженный на 10 плюс остаток
должен дать исходное число то есть частная умноженная на делитель должно
плюс остаток должно дать исходное число минус 1 умножить на 10 плюс
минус двойка должно дать -12 так вот вот это это то что математики считают
неправильно но фирма intel когда-то давно своих процессорах зашила именно
вот эту неправильную модель то есть ассемблерный оператор div и мод они
делают вот эту дрянь которая нарушает собственно математическую вот
штуковина которая для шифрования нужно и для многих других вещей
математиком не нравится как это устроено в процессоров фирмы intel язык си
плюс плюс является наследником си которые архитектурно ориентирован
паскаль вообще не задумывался об этих вещах ну вообщем в этих языках она
7
работает вот так для отрицательных чисел деления и взять взять и остатка на
положительное число дает отрицательные остатки понятно в питоне это не так
в питоне сделано нормально какую математика в питон он не архитектурное
ориентирована там все star вот ближе к математике к реальной значит -12 ну
давайте я сделаю по модулю пять чтобы у меня здесь поместилось ну во-
первых какое ближайшее вот какой ближайшая снизу число кратно 5 минус 15
минус 15 поделить на 5 это минус 3 остаток какой ну смотрим минус 3
умножить на 5 даёт минус 15 до остаток от -15 до -12 получается 3 но у меня
так разные но совку остаток всегда принадлежит диапазону от 0 до 5 не
включая touch и досада числа n не включая чисто красиво математически
понятно если я поставлю вот какое-нибудь число например давайте минус 11
разделить на целом на 10 сколько будет минус 2 минус 2х минус 11 по
модулю 10 то есть остаток при делении на 10 9 понятно ну просто чтобы это с
этим столкнувшись понимали как это работает так ладно с арифметикой одну
последние 4 самый низший приоритет это операции сложения и вычитания x
минус y записывается как x минус y x + y как x плюс y это понять так с
арифметикой все поехали с вами теперь всякие управляющие операции значит
мы с вами сотрем обе доски сейчас быстренько пробежимся какие основные
управляющие операции конструкции языка это циклы и ветвления питоне нет
цикла repeat until цикла с постусловием в питоне только цикл while который
универсальный ну и цикл for как синтаксический сахар что такое
синтаксический сахар но это то что делает жизнь программиста слаще но
необязательно я вообще штука то есть можно было бы вам обойтись но для
удобства красоты и есть for это термин это не я выдумал называется
синтаксический сахар такие штуки итак поехали цикл while ну давайте так
озаглавлена цикл while цикл с предусловием представьте себе что человек
решил побегать по стадиону вот он бежал бежал-бежал бежал по линейной
дорожки где ничего не повторяется и подбежал к старту он формулирует свое
пребывание на этом стадионе следующим образом пока солнышко высоко
пока солнце еще высоко бежать круг или например пока нет дождя он верит
что может быть дождь он собирается пока нет дождя буду бегать и он пошел
бегать вот он бежит то есть выполняет команды тело цикла давайте я напишу
синтаксис теперь пока условия : а здесь оператор один оператор 2 оператор н
ну собственно пришло время немножко сказать о преимуществах языка питон
языке питон нет бегин энд нет фигурных скобок нет никакого другого способа
обозначить блок кроме отступ а то есть вы обязаны делать отступ и этот отступ
выделяет визуально что будет являться телом цикла что нет вот давайте вот тут
я напишу да а вот тут у напишу словно после чтобы было понятно и уровень
вот так отчеркну да вот уровень отступа остальное программа да то здесь
были какие-то операторы которые линейно выполнялись потом операторы
будут линейно последовательно выполняться так как алгоритм это
последовательность команда вот вот там будет последователи а здесь
8
циклическое выполнение вот эта штука называется тело цикла термин такой
тело цикла тело цикла это последовательность операторов которая
выполняется собственно циклическим это заголовок у татьяны горбуши вы в
языке си плюс плюс есть такая картиночка там кошка рядом с исходником на
си и там заголовок тело и хвост там этот вот фигурная скобочка в конце на
хвост а в питоне хвоста и цикла них нет ничего что его закрывает nck цеху
мире здесь этого конце нету просто отступ кончился вот вам и конец все
заголовок и тела есть еще один термин это итерация итерация это очень
важный термин чтобы ему понимали умели называть итерация это
однократное выполнение тело цикла слова итерация относится к процессу
выполнения тела цикла оно статично она есть это текст который написан а
итерация это ход выполнения то есть у нас мы можем обсуждать что реально
произошло на 1 пробегая первый круг я встретил лошадь пробегая второе
встретил своего соседа и сказал ему привет на третьей итерации цикла
переменная дошла до 100 понятно значение переменных на разных операций
естественно быть разному чтобы водить какой-то текст на разных странах
разный понятно но сами инструкции тело цикла они одинаковы и на каждой
итерации просто некоторые из них там зависимости шелухи и условное
поведение сейчас не про него речь так слова итерация заголовок тело цикла
мы с вами прошли теперь смотрите и так я договорился мой спортсмен
выбегает на стадион говорит пока светло и тепло буду бегать вот он побежал
пробежал два шага ну короче говоря выполнился оператор один этот пошел
дождь пошел дождь мокро холодно он бежит бежит вопрос он сразу бежит
смысле покинет стадион или нет а сейчас про него обсудим так вот если тут
написано пока x больше 0 в качестве условия если после первого же оператора
x станет отрицательным не он будет продолжать бежать он не будет сейчас
думать об этом он сконцентрирован и он бежит бежит бежит бежит бежит
бежит бежит бежит и вот он добегает до самого конца и вот в этот момент
почти перед самым финишем снова солнышко засветила он побежит на
следующую итерацию он до закончив выполнение операторов тела на первой
итерации начиная вторую проверит условии если она кажется правдой то он
побежит еще раз и он даже если это каждый раз происходит он будет
бесконечно бегать кстати циклу вольны является циклом которым может
зациклиться то есть не закончится никогда понятно программу в этом случае
зависает что вы наверняка встречали в прикладных программах и так
двигаемся дальше есть одна интересная штука такая она есть в питоне но ее
нет pascal нет в плюсах это душ после стадиона но после стадиона но не все
так делают но многие люди после стадиона чтоб чувствовать себя свежо и
нормально а не выходя проходят душ понятно ли после бассейна чтоб округе в
бассейне намотал и через душу вышел да то есть короче есть такой блок
который выполняется один раз по выходе из цикла вот это может
отсутствовать а может присутствовать делаете это следующим образом мы
9
пишем сюда л.с. и вот сюда пишем это после всех итераций после всех я
перенесу чтобы было понятно что тут ни одно слово может быть а много
операции операторов но потом вот совсем после наступит просто чем же
отличается собственно вот этого душ после стадиона от того чтобы я пойду
делать дальше домашнее задание какими ну чем вот это отличается тот это
ведь при нормально работают вот тут шёл до шло исполнении я буду тут
зацепился зациклился на на выходе я выполняю вот это а потом выполню вот
это ну зачем вот это дело может быть бесился просто это дело написать слева
и все оказывается есть маленькое отличие вот тут вот сказал как-то зовут петр
сказал про еще одну инструкцию управления циклом называется break брейк
как бы сломать я могу в какой-то момент в пожарной ситуации условного
пожар давайте бассейн и очень нравится бассейны нужно пожар в бассейне да
мы пойдем в душе моется ну во первых мы не будем да плевать этот дорожку
да мы просто в середине дорожки выскочил и побежим быстроту выскакиваем
и минуя блок else делаем инструкцию брек правда странно себя представить
что инструкция break просто так лежит в теле цикла получится что мы до нее
дойдём и всегда пожар мы всегда пропускаем все эти операторы она конечно
же она конечно же делается условно условный то есть я про условный
оператор еще скажу то есть если что-то и что-то тогда break она не всегда
происходит а вот когда что-то дополнительное проверили мы даже можем
сделать правда такой цикл интересный в котором while true пока всегда 0
условно пока два плюс два равно четыре пока два плюс два равно четыре
правда тут такой момент я не могу присвоить два плюс два равно четыре
правда присваивание а тут уж не могут присвоить правда как сравнивать друг
с другом числа равно равно то есть операция присваивания отличается от
операции сравнения равно равно 4 вот такой вот то есть я выйду из этого
цикла получается из середины цикл с выходом из середины такое можно
организовать не обязательно писать тривиальное утверждение можно просто
написать слово true пока всегда пока правда а правда никогда не станет ложью
константа правда ладно понятно да то есть когда выполняется break the мы
выскакиваем из цикла минуя л.с. и это можно использовать иногда это дает
интересные фишки до нет элс это уже на выходе то есть у нас вот это условие
которое вот тут вот поставлять больше 0 оно является истинным на каждой
итерации ну смысле на входе в каждую итерацию в тот момент когда она
становится ложным мы выходим из цикла и это вот как раз кто то кому то
смысле хвостик который на выходе из цикла будет выполнен понятно который
иногда бывает как у ящерицы отброшен и не выполнен вот то есть у цикла
while есть как называется ладно давай сейчас дело отложим нам на двигаться
дальше давайте еще немножко поговорим про спорт есть такой вид спорта
называется бертло что происходит в биатлоне спортсмен на лыжах бежит по
кругу этот большой круг спортсмен бежит по кругу но на этом пути его
ожидает как называется это место в общем где он стреляет в мишени ложится
10
стреляет в мишень там стоя стреляет мишени и он не попадает традиционно и
он что должен сделать несколько маленьких кругов то есть на пути вот этого
круга у него есть несколько маленьких кругов на каждом круге он делать
несколько маленьких кругов или короче говоря у нас на каждой итерации
большого цикла может быть цикл называется вложенные циклы ну можно
конечно вообще матрешку сделать что тут он еще так сказать тоже там
вложенный вложенный цикл но стараются таких конструкций где вложенный
вложенные вложенные вложены избегать это считается нехорошо естественно
что количество итераций у вас тогда может возрасти но не до бесконечности
надо очень большого количества короче у меня вполне может быть while 1 а в
нем внутри вложенный файл другой пока y больше 0 да ну естественно что вы
передайте можете успеть что-нибудь сказать внизу игрек равно икс да здесь
вот этот игрек уменьшаете y минус равно 1 коп аньки что это такое написал
что это такое я не говорил про это раньше это оператор присваивания но
новенький сейчас они появятся нажмите да в питоне и так уже три оператора
по желанию получается есть классический просто каскадная при с вами не
множественное призвание карта кортежами целыми да а есть еще
синтаксический сахар укороченные операторы присваивания представьте себе
что мне нужно увеличить переменную на единицу или на какое-то другое
число икс равно икс плюс 1 ну я школьникам когда только вот рассказываю
про оператор прислали такое уравнение не имеет решений это к тому чтобы
они понимали что это не уравнение а это действие оператор присваивает а
действие понятно да мы не наблюдаем а это под выполнение действия
вычислить и присвоить здесь справа старое значение икса при помощи
оператора плюс возрастает на нечто но в данном случае на единицу и
полученный объект связывается с именем x старая связь со старым объектом
исчезай так вот у нас есть синтаксический сахар эта штука может быть
эквивалентно записано как x плюс равно 15 не тот мел понятно x плюс равно 1
соответственно икс равно икс минус 10 но и так для примера чтобы понимали
до x минус равно 10 уменьшить на понятно умножить я напишу так еще какие
есть еще умножить равно разделить равно разделить равно разделить равно не
уверен но почему бы нет я не пользовался ну в общем там щелку и что есть
еще и нам есть вот такой оператор битовый к ссор по моему ну в общем не
суть важно список а первое это уже справочная информация вы просто должны
знать что это есть так двигаемся дальше значит со вложенными циклами с я
щас ну некую ситуацию сформулирую например я хочу x считать с
клавиатуры x равно int от input я вам не показывал пока что как вводится
информация вы это увидите на лабораторной работе но я считываю с
клавиатуру строку преобразуя ее в целое число загоняю выкса игорю пока x
положительный скопировать x y пока игрек положительный уменьшать y и
печатать y print y когда мы напечатали все y ну например x равнялся 5y
скопировалась пятерка и потом поехали уменьшаем получилось четверка
11
распечатали уменьшаем тройка распечатали двойка распечатали единичка
распечатали нолик точнее единичка было больше нуля единичка уменьшили
на единичку эрик стал равен нулю 0 распечатали 0 больше нуля неправда
значит мы выходим вот сюда а здесь я сделаю x минус равно 1 а ну и принц
стоп кавычках что я увижу если я введу здесь в качестве икса троечку ну
простите пожалуйста если бы у меня была возможность работать сейчас на
компьютере вам показывать я просто запустила показал допустим я введут
сюда троечку да что я буду видеть на экране он у меня в начале пробежится и
напечатает 210 это на первой большой итерации большого внешнего цикла
затем x уменьшенной анечку станет равен 2 2 больше 0 y равен 2 2 больше 0 он
уменьшает и печатает 10 x становится равным уже 11 больше 0 и велику
копируется x на 1 больше 0 и уменьшается на единичку становится нулем этот
ноль печатается но было бы может красивее если я переставил вот эти две
инструкции местами потому что если я их переставлю то у меня будет тогда
что 3 2 1 2 1 1 ну то есть понятно что да и так лесенку напечатал понятно а а
ну и в конце stop the в любом случае просто чтобы увидеть понимали что
циклом делал истории не заканчивается т.е. после цикла могут быть какие-то
действия последовательные так последнее что я вам сейчас озвучивая сейчас
проверю что это последнее ах тыж елки палки на может быть даже чуть
задержаться или очень быстро pro iv может быть даже пропустим и и фон
естественно конструкциями и в лс давайте против скажу и в условии :
оператор else : оператор единственное замечание для не умеющих
программировать что в ios не надо писать логическое отрицание условия то
есть иначе он вычисляет условия 1 1 а дальше принимает решение либо эти
операторы либо эти никогда не будет выполнен найти других все с этим ясно
да давайте теперь цикл for цикл for цикл for в питоне это волшебство какое-то
почему спросите вы меня а потому что он списочный или короче говоря
покажите мне как на другом языке программирования которую вы знаете
поскольку mercy как там сделать следующую вещь вывести степени такого
ряда чисел 15 243 именно в этом порядке квадрат и чисел то есть он выведет
125 416 9 вам придется сделать массив константный на вам придется создать
переменную которая и который будет бежать по индексам этого массива и вы
их выводите написать это в две строки у вас не получится в питоне вы просто
говорите для икса в и перечисляйте диапазон но естественно что в так вот вот
так это конечно красиво но ведь на самом деле реально вот так вот вы задал
боитесь писать правда уж не будете до 100 тут перечислять , 6 и это красиво
выглядит поначалу а вот если реально задуматься что же делать но ответ нам
надо уметь генерировать арифметическую прогрессию ну цикл for
традиционно нужен для чего для того чтобы пробегать какой-то диапазон
арифметической прогрессии от одного до ста от 10 до 100 с шагом 10 хотя
паскаль не умеет с шагом то но какой тут арифметическую прогрессию правда
в питоне есть такой генератор называется range то есть я рассказывая о for
12
apache pro for можно сказать что l сведем тоже работает брейк в нем тоже
работает я еще одна вещь забыл сказать сейчас попробую успеть в общем там
тоже это дело есть можно выйти из середины итерации прям экстренный
выход то и можно сделать л с которой соответственно отрабатывается в конце
но если break the он не отрабатывается вот и вложенный ford тоже естественно
можно for вложен внутрь while a while вложен внутрь for a пожалуйста
генератор range классная штука как запомнить как он работает 3 буковки сссс
старт стоп стоп начало конец шаг давайте с вами какие-нибудь конкретные
примеры конкретные примеры например какой диапазон пробежит функции
range 1 , 10 , 1 от 1 до 9 от одного до девяти 1239 дело в том что стоп является
верхней границы диапазона то есть скажем так вот эта штука для сейчас
математически да это напишу имеется виду следующее это пересечение
интервала начиная от единицы до десятки не включительно от старта
включительно до стопа не включить он естественно в пересечении с
натуральным числам прошу прощения с целыми понятно как работает речь
если у вас будет шаг например отрицательным а стоп больше чем старт то у
вас невозможно достигнуть шагом -1 десятки у вас будет пустая
последовательность цикл for не выполниться ни разу кстати у тебя вот здесь
не произнес а если сразу виду x отрицательный то может не быть ни одной
итерации нормальную ситуацию прибежала дождь я не побегу на стадион ясно
так двигаемся дальше раньше работает вот так и если я впишу сюда двоечку
что произойдет 1357 9 до 13 57 9 на 10 не входит 10 часов всегда не входит
если я хочу наоборот 10 , 1 что произойдет во первых шаг надо -1 если
оставлю шаг 1 то единички достигнуть начинают десятки с шагом 1
невозможность пустая последовательность будет пустая их мистическая
прогрессия на поэтому я поставлю -1 но возникнет следующей ситуации он
начнет начнет от 10 включительно от 10 он начнет включительно начнет
уменьшать а один будет с топом то есть один не будет включена понятно
поэтому если вы хотите обратно и сделать последовательно что он нужно
сделать другие числа от 9 соответственно до нуля в качестве стоп а а если вы
хотите чтобы 0 был включительно то даже так 9 минус 1 минус 1 понятно но
это просто мелочь опять же из математики которые сюда проползает еще раз
что такое range это генератор арифметической прогрессии универсальный так
ну и последняя пара 1 заканчивайте отпускать значит кроме возвращаясь к
стадиону возвращаясь к стадиону кроме экстренного выхода совсем
существует возможность некоторые так школе делали взять и пока не видит
физрук перебежать на старт телепортация сразу на следующую итерацию раз
это уже следующий круг бежишь это значит что я середины беру и пропускаю
вот этот кусок и снова на старт называется это дело кантине и продолжить это
дело нужно показывать уже на практике иногда это бывает крайне полезно на
этом сегодня всё спасибо вам за внимание

13
14