diff --git a/TEMA6/report.md b/TEMA6/report.md new file mode 100644 index 0000000..07da5fe --- /dev/null +++ b/TEMA6/report.md @@ -0,0 +1,333 @@ +# Отчет по теме 6 + +***Цель работы: Научиться работать с файловым устройством в качестве накопителя или источника данных для проведения расчетов.*** + +Терехов Фёдор Валерьевич, А-01-23 + + +## 1. Вывод данных на экран дисплея. + +### 1.1. Вывод с использованием функции print. + +>Этот способ можно применять и в командной строке, и в функциях, поэтому привыкайте использовать только его! По умолчанию вывод будет осуществляться на экран, но, как увидим дальше, пункт назначения выводимых данных можно переопределить. + + +```python +fff=234.5;gg='Значение температуры = ' +print(gg, fff) +``` + +Ответ программы: +```shell +Значение температуры = 234.5 +``` + +*По умолчанию выводимые объекты разделяются одним пробелом. Если нужен другой разделитель его можно указать в отдельном аргументе sep.* + +```python +fff=234.5;gg='Значение температуры = ' +print(gg, fff) +print(gg, fff, sep='/') +``` + +Ответ программы: +```shell +Значение температуры = 234.5 +Значение температуры = /234.5 +``` + +*После вывода автоматически осуществляется переход на другую строку. Если курсор надо оставить в той же строке, то следует использовать еще один аргумент.* + +```python +fff=234.5;gg='Значение температуры = ' +print(gg, fff) +print(gg, fff, sep='/') +print(gg, fff,sep='/',end='***'); print('____') +``` + +Ответ программы: +```shell +Значение температуры = 234.5 +Значение температуры = /234.5 +Значение температуры = /234.5***____ +``` + +*После end= надо указать какими символами должна закончиться выводимая строка или указать пустую строку. Наоборот, если в какой-то момент требуется просто перейти на новую строку, можно использовать такое обращение к функции.* + +```python +print() +``` + +*Наконец, оператор вывода может располагаться на нескольких строках с использованием тройных кавычек.* + +```python +print(""" Здесь может выводиться +большой текст, +занимающий несколько строк""") +print("Здесь может выводиться", + "большой текст,", + "занимающий несколько строк") +``` + +Ответ программы: +```shell +Здесь может выводиться +большой текст, +занимающий несколько строк +Здесь может выводиться большой текст, занимающий несколько строк +``` + +### 1.2. Вывод с использованием метода write объекта sys.stdout. + +*Объект stdout представляет собой поток стандартного вывода – объект, в который программы выводят символьное представление данных. Обычно это – экран дисплея. Объект находится в модуле sys, который надо импортировать.* + +```python +import sys +sys.stdout.write('Функция write') +``` + +Ответ программы: +```shell +Функция write% +``` + +*Обратите внимание, что этот метод после вывода строки не осуществляет переход на новую строку. Если это требуется, то следует в конце строки добавить один или несколько символов “\n”:* + +```python +import sys +sys.stdout.write('Функция write\n') +``` + +Ответ программы: +```shell +Функция write +``` + +## 2. Цикл по перечислению – управляющая инструкция for. + +***Общее правило написания:*** +for <Объект-переменная цикла> in <объект>: +<отступы><Блок инструкций 1 – тело цикла> +[else: +< отступы ><Блок инструкций 2 – если в цикле не сработал break>] + +>Здесь <объект> - любой определенный до начала цикла объект из классов строка, список, кортеж, множество, словарь. <Объект-переменная цикла> - объект, в качестве значений которого поочередно будут задаваться элементы объекта, которые могут быть объектами любого типа. <Блок инструкций 1 – тело цикла> - совокупность инструкций, которая может содержать или не содержать инструкцию break, вызывающую досрочное завершение цикла при некоторых условиях. Блок инструкций 1 обычно выполняется многократно по мере того, как объект-переменная цикла принимает значения из сложного объекта. Если в цикле имеется необязательная часть: else и Блок инструкций 2, то он будет выполняться перед завершением цикла только в том случае, если при выполнении цикла не было его прерывания по инструкции break. +Если Блоке инструкций 1 или в Блоке инструкций 2 только одна инструкция, то её можно записывать без отступов сразу за двоеточием. + +### 2.1. Простой цикл. + +```python +temperatura=5 +for i in range(3,18,3): + temperatura+=i +print(temperatura) +``` + +Ответ программы: +```shell +50 +``` + +### 2.2. Более сложный цикл. + +```python +sps=[2,15,14,8] +for k in sps: + if len(sps)<=10:sps.append(sps[0]) + else: break +print("После первого цикла:",sps) +sps=[2,15,14,8] +for k in sps[:]: + if len(sps)<=10:sps.append(sps[0]) + else: break +print("После второго цикла:",sps) +``` + +Ответ программы: +```shell +После первого цикла: [2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2] +После второго цикла: [2, 15, 14, 8, 2, 2, 2, 2] +``` + +>Во втором варианте итерация происходит по неизменяемой копии списка, поэтому цикл выполняется полное количество раз (4 раза), тогда как в первом варианте итерация происходит по изменяемому списку, и цикл завершается досрочно (через break, иначе цикл был бы бесконечным). + +### 2.3. Пример: создание списка с 10 целыми случайными числами из диапазона от 1 до 100. При этом, если сумма чисел не превышает 500, эта сумма должна быть отображена на экране. + +```python +import random as rn +sps5=[] +for i in range(10): + sps5.append(rn.randint(1,100)) + ss=sum(sps5) + if ss>500: break +else: + print(ss) +``` + +Ответ программы (1 попытка): +```shell + +``` + +Ответ программы (2 попытка): +```shell +484 +``` + +Ответ программы (3 попытка): +```shell +450 +``` + +Ответ программы (4 попытка): +```shell + +``` + +Ответ программы (5 попытка): +```shell +359 +``` + +>Объяснение поведения программы: +Почему вывод значения ss бывает не всегда: +else относится к циклу for, а не к if +Блок else выполняется только если цикл завершился нормально (без оператора break). Если срабатывает break, блок else пропускается. + +### 2.4. Пример с символьной строкой. + +```python +stroka='Это – автоматизированная система' +stroka1="" +for ss in stroka: + stroka1+=" "+ss +print(stroka1) +``` + +Ответ программы: +```shell + Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а +``` + +### 2.5. Запись цикла в строке. Пример: создание списка с синусоидальным сигналом. + +```python +import math +import pylab + +sps2 = [math.sin(i * math.pi / 5 + 2) for i in range(100)] + +pylab.plot(sps2) +pylab.title('Синусоидальный сигнал') +pylab.xlabel('Отсчеты') +pylab.ylabel('Амплитуда') +pylab.grid(True) +pylab.show() +``` + +Ответ программы: +![График](Graf_2.5.png) + +## 3. Цикл «пока истинно условие» – управляющая инструкция while. + +***Общее правило написания:*** +while <Условие>: +<отступы><Блок инструкций 1 – тело цикла> +[else: +<отступы><Блок инструкций 2 – если в цикле не сработал break>] + +>Здесь <Условие> - некоторое логическое выражение. Если на очередном витке цикла оно принимает значение True (или ≠0), то выполняется Блок инструкций 1. При этом, если в этом блоке присутствует инструкция break и она будет выполнена, то цикл завершается, иначе – переходит к новому витку цикла. В блоке инструкций 1 могут быть изменены значения объектов, входящих в Условие и его значение тоже может измениться, Если же его значением останется True, то вновь выполняется Блок инструкций 1 и т.д. Если в цикле присутствует Блок инструкций 2, то он будет выполнен, если завершение цикла произошло не по инструкции break, а по значению False (или значению =0) Условия. + +### 3.1. Цикл со счётчиком. + +```python +rashod=300 +while rashod: + print("Расход=",rashod) + rashod-=50 +``` + +Ответ программы: +```shell +Расход= 300 +Расход= 250 +Расход= 200 +Расход= 150 +Расход= 100 +Расход= 50 +``` + +Цикл завершился, потому что в Python число 0 интерпретируется как логическое значение False. + +### 3.2. Пример с символьной строкой. + +```python +import math +stroka='Расчет процесса в объекте регулирования' +i=0 +sps2=[] +while i 1: + if chislo % kandidat == 0: + break + kandidat -= 1 + else: + print(chislo, end=' ') +``` + +Ответ программы: + +```shell +267 имеет множитель 89 + +Простые числа в диапазоне от 250 до 300: +251 257 263 269 271 277 281 283 293 +``` + +### 3.4. Continue. + +>Помимо инструкции break в обоих видах циклов могут использоваться инструкции continue, которые не вызывают завершения цикла, но завершают его текущий виток и обеспечивают переход к следующему витку. + +Пример: Вывод четных чисел от 1 до 10 с использованием continue. + +```python +for i in range(1, 11): + if i % 2 != 0: + continue + print(i, end=' ') +``` + +Ответ программы: + +```shell +2 4 6 8 10 +``` diff --git a/TEMA6/task1.1.py b/TEMA6/task1.1.py new file mode 100644 index 0000000..bff872f --- /dev/null +++ b/TEMA6/task1.1.py @@ -0,0 +1,11 @@ +fff=234.5;gg='Значение температуры = ' +print(gg, fff) +print(gg, fff, sep='/') +print(gg, fff,sep='/',end='***'); print('____') + +print(""" Здесь может выводиться +большой текст, +занимающий несколько строк""") +print("Здесь может выводиться", + "большой текст,", + "занимающий несколько строк") \ No newline at end of file diff --git a/TEMA6/task1.2.py b/TEMA6/task1.2.py new file mode 100644 index 0000000..24c388e --- /dev/null +++ b/TEMA6/task1.2.py @@ -0,0 +1,2 @@ +import sys +sys.stdout.write('Функция write\n') \ No newline at end of file