diff --git a/TEMA5/report.md b/TEMA5/report.md new file mode 100644 index 0000000..702844b --- /dev/null +++ b/TEMA5/report.md @@ -0,0 +1,348 @@ +# Отчет по теме 5 + +Ефремов Станислав, А-02-23 + +## 1 Запуск интерактивной оболочки IDLE + +Была запущена интерактивная оболочка IDLE. + +## 2 Изучение блока ЕСЛИ + +Общее правило написания: + +if <условие>: + <Блок инструкций, выполняемый, если условие истинно> +elif <условие2>: + <Блок инструкций2, выполняемый, если условие2 истинно> +else: + <Блок инструкций3, выполняемый, если условие ложно> + + +```py +porog=4 +rashod1=7 +rashod2=11 +if rashod1>=porog: + dohod=12 +elif rashod2==porog: + dohod=0 +else: + dohod=-8 + +dohod +12 + +if rashod1>=3 and rashod2==4: + dohod=rashod1 + if rashod2==porog or rashod1", line 1, in + dohod +NameError: name 'dohod' is not defined +if porog==3: + dohod=1 +elif porog==4: + dohod=2 +elif porog==5: + dohod=3 +else: + dohod=0 + +dohod +2 +``` +```py +dohod=2 if porog>=4 else 0 +dohod +2 +if porog>=5 : rashod1=6; rashod2=0 + +rashod1 +7 +rashod2 +11 +``` +## 3 Изучение блока FOR +for <Объект-переменная цикла> in <объект>: + <Блок инструкций 1 – тело цикла> +else: + <Блок инструкций 2 – если в цикле не сработал break> +### 3.1. Простой цикл. +```py +temperatura=5 +for i in range(3,18,3): + temperatura+=i + + +temperatura +50 +``` +### 3.2. Первый более сложный цикл. + +#### 3.2.1. +```py +sps=[2,15,14,8] +for k in sps: + if len(sps)<=10:sps.append(sps[0]) + else:break + + +sps +[2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2] +``` +#### 3.2.2. +```py +sps=[2,15,14,8] +for k in sps[:]: # Создается копия списка для итерации + if len(sps)<=10:sps.append(sps[0]) + else:break + +sps +[2, 15, 14, 8, 2, 2, 2, 2] +#Отличие: Цикл итерируется по неизменной копии списка. Пройдя все 4 элемента, цикл завершится. +``` +### 3.3. Второй сложный цикл. +```py +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) + +369 +sps5=[] +for i in range(10): + sps5.append(rn.randint(1,100)) + ss=sum(sps5) + if ss>500: break +else: + print(ss) + + +438 +sps5=[] +for i in range(10): + sps5.append(rn.randint(1,100)) + ss=sum(sps5) + if ss>500: break +else: + print(ss) + + +495 +#Если сумма не превысила 500 за 10 итераций, то выполняется else + +#если сумма превысила 500 на какой-то итерации, то сработает break и вывода не прозойдёт +``` +### 3.4. Работа с символьной строкой +```py +stroka='Это – автоматизированная система' +stroka1="" +for ss in stroka: + stroka1+=" "+ss #к текущей строке stroka1 добавляется пробел и текущий символ ss + + +stroka1 +' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а' +``` +### 3.5. Вывод на график. +```py +import math +sps2=[math.sin(i*math.pi/5+2) for i in range(100)] +import pylab + pylab.plot(sps2) +[] +pylab.title('Синусоидальный сигнал') +Text(0.5, 1.0, 'Синусоидальный сигнал') +pylab.xlabel('Отсчеты') +Text(0.5, 0, 'Отсчеты') +pylab.ylabel('Амплитуда') +Text(0, 0.5, 'Амплитуда') +pylab.show() +``` +![alt text](scr1.png) +## 4. Цикл «пока истинно условие» – управляющая инструкция while. Общее правило написания: +while <Условие>: + <Блок инструкций 1 – тело цикла> +else: + <Блок инструкций 2 – если в цикле не сработал break> +### 4.1. Цикл со счетчиком. +```py +rashod=300 +while rashod: + print("Расход=",rashod) + rashod-=50 + +Расход= 300 +Расход= 250 +Расход= 200 +Расход= 150 +Расход= 100 +Расход= 50 +# Цикл завершился, потому что условие while rashod: стало ложным (False), когда значение переменной rashod достигло 0. +``` +### 4.2. Пример с символьной строкой +```py +import math +stroka = 'Расчет процесса в объекте регулирования' +i = 0 +sps2 = [] +while i < len(stroka): + r = 1 - 2 / (1 + math.exp(0.1 * i)) + sps2.append(r) + print('Значение в момент', i, "=", r) + i += 1 + + +Значение в момент 0 = 0.0 +Значение в момент 1 = 0.049958374957880025 +Значение в момент 2 = 0.09966799462495568 +Значение в момент 3 = 0.14888503362331795 +Значение в момент 4 = 0.197375320224904 +Значение в момент 5 = 0.2449186624037092 +Значение в момент 6 = 0.2913126124515909 +Значение в момент 7 = 0.3363755443363322 +Значение в момент 8 = 0.3799489622552249 +Значение в момент 9 = 0.421899005250008 +Значение в момент 10 = 0.4621171572600098 +Значение в момент 11 = 0.5005202111902354 +Значение в момент 12 = 0.5370495669980353 +Значение в момент 13 = 0.5716699660851172 +Значение в момент 14 = 0.6043677771171636 +Значение в момент 15 = 0.6351489523872873 +Значение в момент 16 = 0.6640367702678489 +Значение в момент 17 = 0.6910694698329307 +Значение в момент 18 = 0.7162978701990245 +Значение в момент 19 = 0.7397830512740043 +Значение в момент 20 = 0.7615941559557649 +Значение в момент 21 = 0.7818063576087741 +Значение в момент 22 = 0.8004990217606297 +Значение в момент 23 = 0.8177540779702878 +Значение в момент 24 = 0.8336546070121553 +Значение в момент 25 = 0.8482836399575129 +Значение в момент 26 = 0.8617231593133063 +Значение в момент 27 = 0.874053287886007 +Значение в момент 28 = 0.8853516482022625 +Значение в момент 29 = 0.8956928738431645 +Значение в момент 30 = 0.9051482536448664 +Значение в момент 31 = 0.9137854901178277 +Значение в момент 32 = 0.9216685544064713 +Значение в момент 33 = 0.9288576214547277 +Значение в момент 34 = 0.935409070603099 +Значение в момент 35 = 0.9413755384972874 +Значение в момент 36 = 0.9468060128462683 +Значение в момент 37 = 0.9517459571646616 +Значение в момент 38 = 0.9562374581277391 + +#### Оформим в график, добавив список с моментами времени: + +i = 0 +sps2 = [] +time_points = [] # Создадим список для моментов времени +while i < len(stroka): + r = 1 - 2 / (1 + math.exp(0.1 * i)) + sps2.append(r) + time_points.append(i) # Запоминаем момент времени + i += 1 + +pylab.plot(time_points, sps2) +[] +pylab.title('Инерционное звено') +Text(0.5, 1.0, 'Инерционное звено') +pylab.xlabel('Время') +Text(0.5, 0, 'Время') +pylab.ylabel('Выход') +Text(0, 0.5, 'Выход') +pylab.show() + +``` +![alt text](scr2.png) +### 4.3. Определение, является ли число простым (делится только на самого себя или 1). +```py +chislo=267 #Проверяемое число +kandidat =chislo // 2 # Для значений chislo > 1 +while kandidat > 1: + if chislo%kandidat == 0: # Остаток от деления + print(chislo, ' имеет множитель ', kandidat) + break # else выполняться не будет + kandidat -= 1 +else: # При завершении цикла без break + print(chislo, ' является простым!') + + +267 имеет множитель 89 +``` + +```py +#### Проверка простоты чисел в диапазоне от 250 до 300 +for chislo in range(250, 301): + kandidat = chislo // 2 # Для значений chislo > 1 + + while kandidat > 1: + if chislo % kandidat == 0: # Остаток от деления + print(chislo, ' имеет множитель ', kandidat) + break # else выполняться не будет + kandidat -= 1 + else: # При завершении цикла без break + print(chislo, ' является простым!') + + +250 имеет множитель 125 +251 является простым! +252 имеет множитель 126 +253 имеет множитель 23 +254 имеет множитель 127 +255 имеет множитель 85 +256 имеет множитель 128 +257 является простым! +258 имеет множитель 129 +259 имеет множитель 37 +260 имеет множитель 130 +261 имеет множитель 87 +262 имеет множитель 131 +263 является простым! +264 имеет множитель 132 +265 имеет множитель 53 +266 имеет множитель 133 +267 имеет множитель 89 +268 имеет множитель 134 +269 является простым! +270 имеет множитель 135 +271 является простым! +272 имеет множитель 136 +273 имеет множитель 91 +274 имеет множитель 137 +275 имеет множитель 55 +276 имеет множитель 138 +277 является простым! +278 имеет множитель 139 +279 имеет множитель 93 +280 имеет множитель 140 +281 является простым! +282 имеет множитель 141 +283 является простым! +284 имеет множитель 142 +285 имеет множитель 95 +286 имеет множитель 143 +287 имеет множитель 41 +288 имеет множитель 144 +289 имеет множитель 17 +290 имеет множитель 145 +291 имеет множитель 97 +292 имеет множитель 146 +293 является простым! +294 имеет множитель 147 +295 имеет множитель 59 +296 имеет множитель 148 +297 имеет множитель 99 +298 имеет множитель 149 +299 имеет множитель 23 +300 имеет множитель 150 +``` \ No newline at end of file