# Отчет по теме 5 Махнов Георгий, А-01-23 ## Тема 5. Блоки инструкций, управляющие инструкции ## 5 Блоки инструкций, управляющие инструкции ### 2 Изучим ветвление по условию – управляющую инструкцию if ```py >>> porog = 13 >>> rashod1 = 8 >>> rashod2 = 9 >>> dohod = 5 >>> if rashod1 >= porog: ... dohod = 12 ... elif rashod2 == porog: ... dohod = 0 ... else: ... dohod =- 8 ... >>> dohod -8 >>> if rashod1 >= porog: ... dohod = 12 ... elif rashod2 == porog: ... dohod = 0 ... else: ... dohod =- 8 ... >>> dohod -8 >>> if porog == 3: ... dohod = 1 ... elif porog == 4: ... dohod = 2 ... elif porog == 5: ... dohod = 3 ... else: ... dohod = 0 ... >>> dohod 0 >>> dohod=2 if porog>=4 else 0 >>> dohod 2 >>> if porog>=5 : rashod1=6; rashod2=0 ... >>> rashod1, rashod2 (6, 0) ``` ### 3 Изучим цикл по перечислению – управляющую инструкцию for #### 3.1 Простой цикл. ```py >>> temperatura = 5 >>> for i in range(3, 18, 3): ... temperatura += i ... >>> temperatura 50 ``` #### 3.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, 2, 2, 2] >>> 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] ``` В первом случае мы идем по каждому элементу внутри списка sps. По условию, если длина списка не больше 10, то в него добавляется первый элемент списка - 2. Но так как мы все еще идем по элементам внутри списка, то по достижению последнего изначального элемента - 8, мы пойдем дальше по добавленным в список элементам (т.е по двойкам), пока не будет удовлетворено условие `if`, из-за чего длина этого списка равна 11. Во втором случае при помощи среза [:] мы идем по первоначальным элементам списка, но не внутри самого списка, и при добавлении двоек в изначальный список цикл не будет продолжать работать после обработки последнего элемента первоначального списка, из-за чего длина списка равна 8. #### 3.3 Создание списка с 10 целыми случайными числами из диапазона от 1 до 100. При этом, если сум-ма чисел не превышает 500, эта сумма должна быть отображена на экране ```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) ... >>> print(ss) 501 ``` Программа не всегда выводит значения на экран. Это происходит из-за оператора `break`, который завершает цикл, если сумма ss первысила 500. В этом случае `else` не выполняется. #### 3.4 Пример с символьной строкой ```py >>> stroka='Это – автоматизированная система' >>> stroka1="" >>> for ss in stroka: ... stroka1+=" "+ss ... >>> stroka 'Это – автоматизированная система' >>> 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.show() ``` Полученный график: ![alt text](image.png) ### 4 Изучим цикл «пока истинно условие» – управляющую инструкцию while #### 4.1 Цикл со счетчиком. ```py >>> rashod = 300 >>> while rashod: ... print("Расход=",rashod) ... rashod-=50 ... Расход= 300 Расход= 250 Расход= 200 Расход= 150 Расход= 100 Расход= 50 ``` Завершение цикла произошло в тот момент, когда переменная rashod стала равна нулю, завершив цикл, так как ноль как логическая переменная значит False. #### 4.2 Пример с символьной строкой ```py >>> stroka='Расчет процесса в объекте регулирования' >>> i=0 >>> sps2=[] >>> while i