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 является простым!