форкнуто от main/python-labs
				
			
							Родитель
							
								
									f43cd6d7d6
								
							
						
					
					
						Сommit
						07f66ace3c
					
				@ -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<rashod2:
 | 
				
			||||||
 | 
							dohod=porog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
					dohod
 | 
				
			||||||
 | 
					Traceback (most recent call last):
 | 
				
			||||||
 | 
					  File "<pyshell#10>", line 1, in <module>
 | 
				
			||||||
 | 
					    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)
 | 
				
			||||||
 | 
					[<matplotlib.lines.Line2D object at 0x000002A57ED02490>]
 | 
				
			||||||
 | 
					pylab.title('Синусоидальный сигнал')
 | 
				
			||||||
 | 
					Text(0.5, 1.0, 'Синусоидальный сигнал')
 | 
				
			||||||
 | 
					pylab.xlabel('Отсчеты')
 | 
				
			||||||
 | 
					Text(0.5, 0, 'Отсчеты')
 | 
				
			||||||
 | 
					pylab.ylabel('Амплитуда')
 | 
				
			||||||
 | 
					Text(0, 0.5, 'Амплитуда')
 | 
				
			||||||
 | 
					pylab.show()
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 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)
 | 
				
			||||||
 | 
					[<matplotlib.lines.Line2D object at 0x0000023EA70F6850>]
 | 
				
			||||||
 | 
					pylab.title('Инерционное звено')
 | 
				
			||||||
 | 
					Text(0.5, 1.0, 'Инерционное звено')
 | 
				
			||||||
 | 
					pylab.xlabel('Время')
 | 
				
			||||||
 | 
					Text(0.5, 0, 'Время')
 | 
				
			||||||
 | 
					pylab.ylabel('Выход')
 | 
				
			||||||
 | 
					Text(0, 0.5, 'Выход')
 | 
				
			||||||
 | 
					pylab.show()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 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
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
					Загрузка…
					
					
				
		Ссылка в новой задаче