diff --git a/TEMA5/report.md b/TEMA5/report.md index 004d64e..ba19272 100644 --- a/TEMA5/report.md +++ b/TEMA5/report.md @@ -9,10 +9,18 @@ >>>import os >>>os.chdir('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA5') +Управляющие инструкции, как и в других языках программирования, используются в Python для разветвления линий потока. Их применение имеет как сходство, так и заметные отличия по сравнению с другими языками программирования. В программах на Python они применяются по следующей общей схеме: <Управляющая инструкция>: <отступы><Блок инструкций> + +Здесь управляющая инструкция начинается зарезервированными словами, такими как if, while, for… и дополняется логическим выражением, со значением True или False. Блок инструкций – это совокупность инструкций на языке Python, возможно, включающая вложенные управляющие инструкции. Относительно управляющей инструкции блок инструкций сдвигается влево с использованием одинаковых отступов, задаваемых либо некоторым числом пробелов, либо одной или несколькими табуляциями. + # 2 Изучение блока ЕСЛИ Были изучены и применены различные конструкции блоков с использованием условия if. Рассмотрены также elif и else. Изучены блоки условий, записываемые в одну строку. +Общее правило написания: if <условие>: <отступы><Блок инструкций, выполняемый, если условие истинно> [elif <условие2>: <отступы><Блок инструкций2, выполняемый, если условие2 истинно> ] [else: < отступы><Блок инструкций3, выполняемый, если условие ложно> ] + +Условие задается в виде логического выражения, которое может принимать значение True или False. Блок инструкций может располагаться на нескольких строках. Отступы во всех строках блока должны быть одинаковыми по отношению к первому символу управляющей инструкции. Если имеется вложенная управляющая инструкция, то она вводится с таким же отступом, а все строки ее блоков – отступают по отношению к ее первому символу. Признак конца блока – отсутствие отступов в очередной строке или ввод пустой строки. Если в Блоке инструкций только одна инструкция, её можно записывать без отступов сразу за знаком «:». + >>> porog = 35 >>> rashod1 = 21 >>> rashod2 = 15 @@ -36,6 +44,7 @@ >>> dohod -8 +В конструкции if-elif-else всегда выполняется только одна ветвь. Даже если условие в elif также истинно, оно не будет проверено и, соответственно, не выполнится, если до этого уже выполнился блок if. Это связано с тем, что после выполнения любого блока инструкции (будь то if, elif или else) остальные части конструкции игнорируются. >>> if porog==3: ... dohod=1 @@ -49,6 +58,7 @@ >>> dohod 0 +Условные инструкции могут записываться также в одну строку в операторе присваивания по следующей схеме: <Объект>=<значение 1> if <условие> else <значение 2> или ещё: if <условие>: <инструкция1>[;<инструкция2>….] >>> dohod=2 if porog>=4 else 0 >>> dohod @@ -63,6 +73,10 @@ Был изучен и применен блок for, разобрана простая конструкция и несколько сложных. +Общее правило написания: for <Объект-переменная цикла> in <объект>: <отступы><Блок инструкций 1 – тело цикла> [else: < отступы ><Блок инструкций 2 – если в цикле не сработал break>] + +Здесь <объект> - любой определенный до начала цикла объект из классов строка, список, кортеж, множество, словарь. <Объект-переменная цикла> - объект, в качестве значений которого поочередно будут задаваться элементы объекта, которые могут быть объектами любого типа. <Блок инструкций 1 – тело цикла> - совокупность инструкций, которая может содержать или не содержать инструкцию break, вызывающую досрочное завершение цикла при некоторых условиях. Блок инструкций 1 обычно выполняется многократно по мере того, как объект-переменная цикла принимает значения из сложного объекта. Если в цикле имеется необязательная часть: else и Блок инструкций 2, то он будет выполняться перед завершением цикла только в том случае, если при выполнении цикла не было его прерывания по инструкции break. Если в Блоке инструкций 1 или в Блоке инструкций 2 только одна инструкция, то её можно записывать без отступов сразу за двоеточием. + # 3.1 Изучение простого цикла for Был применен простой цикл for, который перебирает числа из сгенерированной последовательности и каждый раз увеличивает заданное значение на это число. @@ -87,6 +101,7 @@ >>> sps [2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2] +Как видно, в конец цикла добавляется двойка до тех пор, пока длина не превысит 10. sps - это объект, по которому проходит k, и объект, изменяющийся внутри цикла. Если список изменяется во время цикла, это влияет на последующие итерации. (При этом else в данном случае относится к if, а не к for) >>> sps=[2,15,14,8] >>> for k in sps[:]: @@ -98,7 +113,7 @@ # 3.3 Изучение второго сложного цикла for -Был приненен цикл for, в котором при каждой итерации для i от 0 до 9, созданный пустой список пополняется значением от 0 до 97 и подсчитывается сумма чисел в списке. При достижении суммы числа более 500, итерация прерывается. Если же итерации успевают закончиться естественным образом и сумма получается значением менее 500, по сумма печатается на экран. +Был приненен цикл for, в котором при каждой итерации для i от 0 до 9, созданный пустой список пополняется значением от 0 до 100 и подсчитывается сумма чисел в списке. При достижении суммы числа более 500, итерация прерывается. Если же итерации успевают закончиться естественным образом и сумма получается значением менее 500, по сумма печатается на экран. >>> import random as rn >>> sps5=[] @@ -141,6 +156,8 @@ >>> ss 'а' +Переменная ss проходит по всему строковому объекту, на каждой итерации принимая значение одного знака. Этот знак с предшествующим пробелом дописывается в конец другой, изначально пустой строки. Цикл закончится, когда закончится исходная строка. + # 3.5 Изучение записи цикла в строке Был использован цикл для создания сигналов (цикл создает список из чисел, вычесленных по определенному выражению, в которое входит i, изменяемое в ходе итераций от 0 до 99). А также построоен график отображения сигналов. @@ -154,12 +171,16 @@ Text(0.5, 1.0, 'Сигналы') >>> pylab.show() +Здесь используется конструкция list comprehention (генератор списков). В общем виде она выглядит так: <итоговый список> = [<выражение> for <элемент> in <исходный объект> if <условие>] + ![](Ris1.png) # 4 Изучение цикла While Были изучены и применены различные варианты циклов с использованием блоков while. +Общее правило написания: while <Условие>: <отступы><Блок инструкций 1 – тело цикла> [else: <отступы><Блок инструкций 2 – если в цикле не сработал break>] Здесь <Условие> - некоторое логическое выражение. Если на очередном витке цикла оно принимает значение True (или не равно 0), то выполняется Блок инструкций 1. При этом, если в этом блоке присутствует инструкция break и она будет выполнена, то цикл завершается, иначе – переходит к новому витку цикла. В блоке инструкций 1 могут быть изменены значения объектов, входящих в Условие и его значение тоже может измениться. Если же его значением останется True, то вновь выполняется Блок инструкций 1 и т.д. Если в цикле присутствует Блок инструкций 2, то он будет выполнен, если завершение цикла произошло не по инструкции break, а по значению False (или значению =0) условия. + # 4.1 Изучение цикла while со счетчиком Был применен цикл while, который уменьшает значение rashod на 50 единиц. Здесь rashod = True до тех пор пока его значение положительное. Когда rashod становится равным 0, цикл прерывается. На каждой итерации печатается значение rashod.