Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

7.0 KiB

Отчет по Теме 5

Зеленкина Ксения, А-02-23

1. Начало работы.

Запустила интерактивную оболочку IDLE и открыла окно текстового редактора, куда буду фиксировать мои дальнейшие действия.

2. Условный оператор.

Изучила ветвление по условию – управляющая инструкция if. Задала некоторые числовые значения объектам porog, rashod1, rashod2. Выполните следующую операцию, определив значение dohod:

Пример 1:

porog, rashod1, rashod2 = 3, 120, 50
if rashod1>=porog:
   	dohod=12
elif rashod2==porog:
   	dohod=0
else:
    	dohod=-8
print(dohod)

Результат:

12

Выполним ещё одну операцию, определив значение dohod: Пример 2:

if rashod1>=3 and rashod2==4:
		dohod=rashod1
   	if rashod2==porog or rashod1<rashod2:
			dohod=porog
print(dohod)

Результат:

12

Ещё одна операция с множественным ветвлением линий потока: Пример 3:

if porog==3:
		dohod=1
elif porog==4:
		dohod=2
elif porog==5:
		dohod=3
else:
		dohod=0
print(dohod)

Результат:

1

Условные инструкции можно записываться также в одну строку в операторе присваивания. Изучим примеры: Пример 1:

dohod=2 if porog>=4 else 0

Результат:

0

Пример 2:

porog = 10
if porog>=5 : rashod1=6; rashod2=0
print(rashod1, rashod2)

Результат:

6 0

3. Цикл по перечислению.

Цикл по перечислению – управляющая инструкция for.

3.1.

Выполним простой цикл:

temperatura=5
for i in range(3,18,3):
   temperatura+=i
   print(temperatura)

Результат:

8
14
23
35
50

3.2.

Выполним более сложный цикл:

sps=[2,15,14,8]
for k in sps:
   if len(sps)<=10:sps.append(sps[0])
   else:break
print(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
print(sps)

Результат:

[2, 15, 14, 8, 2, 2, 2, 2]

3.3.

Пример: создание списка с 10 целыми случайными числами из диапазона от 1 до 100. При этом, если сумма чисел не превышает 500, эта сумма должна быть отображена на экране.

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 раз: (пусто)
2 раз: (пусто)
3 раз: 316

Вывод значения ss бывает не всегда, потому что блок else относится к циклу for и выполняется только если цикл не был прерван break.

3.4.

Пример с символьной строкой

stroka='Это – автоматизированная система'
stroka1=""
for ss in stroka:
   stroka1+=" "+ss
print(stroka1)

Результат:

Э т о      а в т о м а т и з и р о в а н н а я   с и с т е м а

3.5.

Запись цикла в строке. Пример: создание списка с синусоидальным сигналом:

import math
import matplotlib.pyplot as plt
sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
x = list(range(100))
plt.figure(figsize=(12, 6))
plt.plot(x, sps2, 'b-', linewidth=1, label='sin(i*π/5 + 2)')
plt.title('График сигнала: sin(i*π/5 + 2)')
plt.xlabel('i (индекс)')
plt.ylabel('Значение sin(i*π/5 + 2)')
plt.show()

График:

4. Цикл «пока истинно условие»

Цикл «пока истинно условие» – управляющая инструкция while.

4.1.

Цикл со счетчиком:

rashod=300
while rashod:
   print("Расход=",rashod)
   rashod-=50

Результат:

Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50

Цикл завершился, потому что условие while rashod: стало ложным, когда rashod достиг нуля.

4.2.

Пример с символьной строкой.

import math
import matplotlib.pyplot as plt
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
plt.figure(figsize=(12, 6))
plt.plot(sps2, 'b-', linewidth=2, label='Выход инерционного звена')
plt.title('Сигнал на выходе инерционного звена')
plt.xlabel('Время (момент i)')
plt.ylabel('Значение r')
plt.grid(True, alpha=0.3)
plt.legend()
plt.show()

График:

4.3.

Определим, является ли число простым (делится только на самого себя или 1).

chislo=267   #Проверяемое число
kandidat =chislo // 2 		
while kandidat > 1:
	if chislo%kandidat == 0: 
		print(chislo, ' имеет множитель ', kandidat)
		break 		# else выполняться не будет
	kandidat -= 1
else: 			# При завершении цикла без break
	print(chislo, ' является простым!')

Результат:

267  имеет множитель  89

Дополним программу так, чтобы выявить все простые числа в диапазоне от 250 до 300.

for chislo in range(250, 301):
   kandidat = chislo // 2
   while kandidat > 1:
   	if chislo % kandidat == 0:
   		break
   	kandidat -= 1
   else:
   	print(chislo, 'является простым!')

Результат:

251 является простым!
257 является простым!
263 является простым!
269 является простым!
271 является простым!
277 является простым!
281 является простым!
283 является простым!
293 является простым!

Завершение работы.