форкнуто от main/python-labs
Родитель
ec044da6d5
Сommit
b7520864bd
|
После Ширина: | Высота: | Размер: 82 KiB |
|
После Ширина: | Высота: | Размер: 46 KiB |
@ -0,0 +1,139 @@
|
|||||||
|
# Тема 5 < Зеленкина Ксения Михайловна>
|
||||||
|
# 2.
|
||||||
|
# Пример 1.
|
||||||
|
porog, rashod1, rashod2 = 3, 120, 50
|
||||||
|
if rashod1>=porog:
|
||||||
|
dohod=12
|
||||||
|
elif rashod2==porog:
|
||||||
|
dohod=0
|
||||||
|
else:
|
||||||
|
dohod=-8
|
||||||
|
print(dohod)
|
||||||
|
|
||||||
|
# Пример 2.
|
||||||
|
if rashod1>=3 and rashod2==4:
|
||||||
|
dohod=rashod1
|
||||||
|
if rashod2==porog or rashod1<rashod2:
|
||||||
|
dohod=porog
|
||||||
|
print(dohod)
|
||||||
|
|
||||||
|
# Пример 3
|
||||||
|
if porog==3:
|
||||||
|
dohod=1
|
||||||
|
elif porog==4:
|
||||||
|
dohod=2
|
||||||
|
elif porog==5:
|
||||||
|
dohod=3
|
||||||
|
else:
|
||||||
|
dohod=0
|
||||||
|
print(dohod)
|
||||||
|
|
||||||
|
|
||||||
|
# В одну строчку
|
||||||
|
# Пример 1
|
||||||
|
dohod=2 if porog>=4 else 0
|
||||||
|
print(dohod)
|
||||||
|
|
||||||
|
# Пример 2
|
||||||
|
porog = 10
|
||||||
|
if porog>=5 : rashod1=6; rashod2=0
|
||||||
|
print(rashod1, rashod2)
|
||||||
|
|
||||||
|
# 3.1
|
||||||
|
temperatura=5
|
||||||
|
for i in range(3,18,3):
|
||||||
|
temperatura+=i
|
||||||
|
print(temperatura)
|
||||||
|
|
||||||
|
# 3.2
|
||||||
|
# Пример 1
|
||||||
|
sps=[2,15,14,8]
|
||||||
|
for k in sps:
|
||||||
|
if len(sps)<=10:sps.append(sps[0])
|
||||||
|
else:break
|
||||||
|
print(sps)
|
||||||
|
|
||||||
|
#Пример 2
|
||||||
|
sps=[2,15,14,8]
|
||||||
|
for k in sps[:]:
|
||||||
|
if len(sps)<=10:sps.append(sps[0])
|
||||||
|
else:break
|
||||||
|
print(sps)
|
||||||
|
|
||||||
|
# 3.3
|
||||||
|
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)
|
||||||
|
|
||||||
|
# 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.1
|
||||||
|
rashod=300
|
||||||
|
while rashod:
|
||||||
|
print("Расход=",rashod)
|
||||||
|
rashod-=50
|
||||||
|
# 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.
|
||||||
|
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, ' является простым!')
|
||||||
|
|
||||||
|
# Дополненный код
|
||||||
|
for chislo in range(250, 301):
|
||||||
|
kandidat = chislo // 2
|
||||||
|
while kandidat > 1:
|
||||||
|
if chislo % kandidat == 0:
|
||||||
|
break
|
||||||
|
kandidat -= 1
|
||||||
|
else:
|
||||||
|
print(chislo, 'является простым!')
|
||||||
|
|
||||||
@ -0,0 +1,263 @@
|
|||||||
|
# Отчет по Теме 5
|
||||||
|
|
||||||
|
Зеленкина Ксения, А-02-23
|
||||||
|
|
||||||
|
## 1. Начало работы.
|
||||||
|
Запустила интерактивную оболочку IDLE и открыла окно текстового редактора, куда буду фиксировать мои дальнейшие действия.
|
||||||
|
|
||||||
|
## 2. Условный оператор.
|
||||||
|
Изучила ветвление по условию – управляющая инструкция __if__.
|
||||||
|
Задала некоторые числовые значения объектам __porog__, __rashod1__, __rashod2__. Выполните следующую операцию, определив значение __dohod__:
|
||||||
|
|
||||||
|
_Пример 1:_
|
||||||
|
```py
|
||||||
|
porog, rashod1, rashod2 = 3, 120, 50
|
||||||
|
if rashod1>=porog:
|
||||||
|
dohod=12
|
||||||
|
elif rashod2==porog:
|
||||||
|
dohod=0
|
||||||
|
else:
|
||||||
|
dohod=-8
|
||||||
|
print(dohod)
|
||||||
|
```
|
||||||
|
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
12
|
||||||
|
```
|
||||||
|
Выполним ещё одну операцию, определив значение __dohod__:
|
||||||
|
_Пример 2:_
|
||||||
|
```py
|
||||||
|
if rashod1>=3 and rashod2==4:
|
||||||
|
dohod=rashod1
|
||||||
|
if rashod2==porog or rashod1<rashod2:
|
||||||
|
dohod=porog
|
||||||
|
print(dohod)
|
||||||
|
```
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
12
|
||||||
|
```
|
||||||
|
Ещё одна операция с множественным ветвлением линий потока:
|
||||||
|
_Пример 3:_
|
||||||
|
```py
|
||||||
|
if porog==3:
|
||||||
|
dohod=1
|
||||||
|
elif porog==4:
|
||||||
|
dohod=2
|
||||||
|
elif porog==5:
|
||||||
|
dohod=3
|
||||||
|
else:
|
||||||
|
dohod=0
|
||||||
|
print(dohod)
|
||||||
|
```
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
1
|
||||||
|
```
|
||||||
|
Условные инструкции можно записываться также в одну строку в операторе присваивания. Изучим примеры:
|
||||||
|
_Пример 1:_
|
||||||
|
```py
|
||||||
|
dohod=2 if porog>=4 else 0
|
||||||
|
```
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
0
|
||||||
|
```
|
||||||
|
|
||||||
|
_Пример 2:_
|
||||||
|
```py
|
||||||
|
porog = 10
|
||||||
|
if porog>=5 : rashod1=6; rashod2=0
|
||||||
|
print(rashod1, rashod2)
|
||||||
|
```
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
6 0
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Цикл по перечислению.
|
||||||
|
Цикл по перечислению – управляющая инструкция for.
|
||||||
|
#### 3.1.
|
||||||
|
Выполним простой цикл:
|
||||||
|
```py
|
||||||
|
temperatura=5
|
||||||
|
for i in range(3,18,3):
|
||||||
|
temperatura+=i
|
||||||
|
print(temperatura)
|
||||||
|
```
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
8
|
||||||
|
14
|
||||||
|
23
|
||||||
|
35
|
||||||
|
50
|
||||||
|
```
|
||||||
|
#### 3.2.
|
||||||
|
Выполним более сложный цикл:
|
||||||
|
```py
|
||||||
|
sps=[2,15,14,8]
|
||||||
|
for k in sps:
|
||||||
|
if len(sps)<=10:sps.append(sps[0])
|
||||||
|
else:break
|
||||||
|
print(sps)
|
||||||
|
```
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
[2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2]
|
||||||
|
```
|
||||||
|
Выполним чуть-чуть отличающуюся совокупность операций:
|
||||||
|
```py
|
||||||
|
sps=[2,15,14,8]
|
||||||
|
for k in sps[:]:
|
||||||
|
if len(sps)<=10:sps.append(sps[0])
|
||||||
|
else:break
|
||||||
|
print(sps)
|
||||||
|
```
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
[2, 15, 14, 8, 2, 2, 2, 2]
|
||||||
|
```
|
||||||
|
#### 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)
|
||||||
|
```
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
1 раз: (пусто)
|
||||||
|
2 раз: (пусто)
|
||||||
|
3 раз: 316
|
||||||
|
```
|
||||||
|
Вывод значения __ss__ бывает не всегда, потому что блок __else__ относится к циклу __for__ и выполняется только если цикл не был прерван __break__.
|
||||||
|
|
||||||
|
#### 3.4.
|
||||||
|
Пример с символьной строкой
|
||||||
|
```py
|
||||||
|
stroka='Это – автоматизированная система'
|
||||||
|
stroka1=""
|
||||||
|
for ss in stroka:
|
||||||
|
stroka1+=" "+ss
|
||||||
|
print(stroka1)
|
||||||
|
```
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3.5.
|
||||||
|
Запись цикла в строке. Пример: создание списка с синусоидальным сигналом:
|
||||||
|
```py
|
||||||
|
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()
|
||||||
|
```
|
||||||
|
__График:__
|
||||||
|
<img src = "./photo1.png" width="500" height="400" align="center">
|
||||||
|
|
||||||
|
## 4. Цикл «пока истинно условие»
|
||||||
|
Цикл «пока истинно условие» – управляющая инструкция __while__.
|
||||||
|
#### 4.1.
|
||||||
|
Цикл со счетчиком:
|
||||||
|
```py
|
||||||
|
rashod=300
|
||||||
|
while rashod:
|
||||||
|
print("Расход=",rashod)
|
||||||
|
rashod-=50
|
||||||
|
```
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
Расход= 300
|
||||||
|
Расход= 250
|
||||||
|
Расход= 200
|
||||||
|
Расход= 150
|
||||||
|
Расход= 100
|
||||||
|
Расход= 50
|
||||||
|
```
|
||||||
|
Цикл завершился, потому что условие __while rashod__: стало ложным, когда __rashod__ достиг нуля.
|
||||||
|
|
||||||
|
#### 4.2.
|
||||||
|
Пример с символьной строкой.
|
||||||
|
```py
|
||||||
|
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()
|
||||||
|
```
|
||||||
|
|
||||||
|
__График:__
|
||||||
|
<img src = "./photo2.png" width="500" height="400" align="center">
|
||||||
|
|
||||||
|
#### 4.3.
|
||||||
|
Определим, является ли число простым (делится только на самого себя или 1).
|
||||||
|
```py
|
||||||
|
chislo=267 #Проверяемое число
|
||||||
|
kandidat =chislo // 2
|
||||||
|
while kandidat > 1:
|
||||||
|
if chislo%kandidat == 0:
|
||||||
|
print(chislo, ' имеет множитель ', kandidat)
|
||||||
|
break # else выполняться не будет
|
||||||
|
kandidat -= 1
|
||||||
|
else: # При завершении цикла без break
|
||||||
|
print(chislo, ' является простым!')
|
||||||
|
```
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
267 имеет множитель 89
|
||||||
|
```
|
||||||
|
|
||||||
|
Дополним программу так, чтобы выявить все простые числа в диапазоне от 250 до 300.
|
||||||
|
```py
|
||||||
|
for chislo in range(250, 301):
|
||||||
|
kandidat = chislo // 2
|
||||||
|
while kandidat > 1:
|
||||||
|
if chislo % kandidat == 0:
|
||||||
|
break
|
||||||
|
kandidat -= 1
|
||||||
|
else:
|
||||||
|
print(chislo, 'является простым!')
|
||||||
|
```
|
||||||
|
|
||||||
|
__Результат:__
|
||||||
|
```py
|
||||||
|
251 является простым!
|
||||||
|
257 является простым!
|
||||||
|
263 является простым!
|
||||||
|
269 является простым!
|
||||||
|
271 является простым!
|
||||||
|
277 является простым!
|
||||||
|
281 является простым!
|
||||||
|
283 является простым!
|
||||||
|
293 является простым!
|
||||||
|
```
|
||||||
|
|
||||||
|
## Завершение работы.
|
||||||
Загрузка…
Ссылка в новой задаче