TerekhovFV 4 недель назад
Родитель 89f8c624cd
Сommit d552df2b48

Двоичные данные
TEMA5/Graf_2.5.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 47 KiB

Двоичные данные
TEMA5/Graf_3.2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 23 KiB

@ -0,0 +1,350 @@
# Отчет по теме 5
***Цель работы: Изучение способов формирования и использования блоков инструкций и обеспечения разветвления линий потока в алгоритмах.***
Терехов Фёдор Валерьевич, А-01-23
>Управляющие инструкции, как и в других языках программирования, используются в Python для разветвления линий потока. Их применение имеет как сходство, так и заметные отличия по сравнению с другими языками программирования. В программах на Python они применяются по следующей общей схеме:
<Управляющая инструкция>:
<отступы><Блок инструкций>
Здесь управляющая инструкция начинается зарезервированными словами, такими как if, while, for… и дополняется логическим выражением, со значением True или False.
Блок инструкций – это совокупность инструкций на языке Python, возможно, включающая вложенные управляющие инструкции. Относительно управляющей инструкции блок инструкций сдвигается влево с использованием одинаковых отступов, задаваемых либо некоторым числом пробелов, либо одной или несколькими табуляциями. Величина отступа задаётся в настройках среды (Indentation Width). По умолчанию – это 4 пробела или 1 табуляция.
## 1. Изучите ветвление по условию – управляющая инструкция if.
**Общее правило написания:**
if <условие>:
<отступы><Блок инструкций, выполняемый, если условие истинно>.
[elif <условие2>:
<отступы><Блок инструкций2, выполняемый, если условие2 истинно>
]
[else:
< отступы><Блок инструкций3, выполняемый, если условие ложно>
]
>Условие задается в виде логического выражения, которое может принимать значение True или False. Блок инструкций может располагаться на нескольких строках. Отступы во всех строках блока должны быть одинаковыми по отношению к первому символу управляющей инструкции. Если имеется вложенная управляющая инструкция, то она вводится с таким же отступом, а все строки ее блоков – отступают по отношению к ее первому символу. Признак конца блока – отсутствие отступов в очередной строке или ввод пустой строки.
Если в Блоке инструкций только одна инструкция, её можно записывать без отступов сразу за знаком «:».
Пример 1.1:
```python
porog=100
rashod1=50
rashod2=100
if rashod1>=porog:
dohod=12
elif rashod2==porog:
dohod=0
else:
dohod=-8
print(dohod)
```
Ответ программы:
```shell
0
```
Пример 1.2:
```python
rashod1=2
rashod2=4
porog=5
dohod=0
if rashod1>=3 and rashod2==4:
dohod=rashod1
if rashod2==porog or rashod1<rashod2:
dohod=porog
print(dohod)
```
Ответ программы:
```shell
5
```
Пример 1.3:
```python
porog=4
if porog==3:
dohod=1
elif porog==4:
dohod=2
elif porog==5:
dohod=3
else:
dohod=0
print(dohod)
```
Ответ программы:
```shell
2
```
>Условные инструкции могут записываться также в одну строку в операторе присваивания по следующей схеме:
<Объект>=<значение 1> if <условие> else <значение 2>
или ещё:
if <условие>: <инструкция1>[;<инструкция2>….]
Пример 1.4:
```python
porog=4
dohod=2 if porog>=4 else 0
print(dohod)
```
Ответ программы:
```shell
2
```
Пример 1.5:
```python
porog=5
rashod1=2
rashod2=4
if porog>=5 : rashod1=6; rashod2=0
print(rashod1,rashod2)
```
Ответ программы:
```shell
6 0
```
## 2. Цикл по перечислению – управляющая инструкция for.
***Общее правило написания:***
for <Объект-переменная цикла> in <объект>:
<отступы><Блок инструкций 1 – тело цикла>
[else:
< отступы ><Блок инструкций 2 – если в цикле не сработал break>]
>Здесь <объект> - любой определенный до начала цикла объект из классов строка, список, кортеж, множество, словарь. <Объект-переменная цикла> - объект, в качестве значений которого поочередно будут задаваться элементы объекта, которые могут быть объектами любого типа. <Блок инструкций 1 – тело цикла> - совокупность инструкций, которая может содержать или не содержать инструкцию break, вызывающую досрочное завершение цикла при некоторых условиях. Блок инструкций 1 обычно выполняется многократно по мере того, как объект-переменная цикла принимает значения из сложного объекта. Если в цикле имеется необязательная часть: else и Блок инструкций 2, то он будет выполняться перед завершением цикла только в том случае, если при выполнении цикла не было его прерывания по инструкции break.
Если Блоке инструкций 1 или в Блоке инструкций 2 только одна инструкция, то её можно записывать без отступов сразу за двоеточием.
### 2.1. Простой цикл.
```python
temperatura=5
for i in range(3,18,3):
temperatura+=i
print(temperatura)
```
Ответ программы:
```shell
50
```
### 2.2. Более сложный цикл.
```python
sps=[2,15,14,8]
for k in sps:
if len(sps)<=10:sps.append(sps[0])
else: break
print("После первого цикла:",sps)
sps=[2,15,14,8]
for k in sps[:]:
if len(sps)<=10:sps.append(sps[0])
else: break
print("После второго цикла:",sps)
```
Ответ программы:
```shell
После первого цикла: [2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2]
После второго цикла: [2, 15, 14, 8, 2, 2, 2, 2]
```
>Во втором варианте итерация происходит по неизменяемой копии списка, поэтому цикл выполняется полное количество раз (4 раза), тогда как в первом варианте итерация происходит по изменяемому списку, и цикл завершается досрочно (через break, иначе цикл был бы бесконечным).
### 2.3. Пример: создание списка с 10 целыми случайными числами из диапазона от 1 до 100. При этом, если сумма чисел не превышает 500, эта сумма должна быть отображена на экране.
```python
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 попытка):
```shell
```
Ответ программы (2 попытка):
```shell
484
```
Ответ программы (3 попытка):
```shell
450
```
Ответ программы (4 попытка):
```shell
```
Ответ программы (5 попытка):
```shell
359
```
>Объяснение поведения программы:
Почему вывод значения ss бывает не всегда:
else относится к циклу for, а не к if
Блок else выполняется только если цикл завершился нормально (без оператора break). Если срабатывает break, блок else пропускается.
### 2.4. Пример с символьной строкой.
```python
stroka='Это – автоматизированная система'
stroka1=""
for ss in stroka:
stroka1+=" "+ss
print(stroka1)
```
Ответ программы:
```shell
Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а
```
### 2.5. Запись цикла в строке. Пример: создание списка с синусоидальным сигналом.
```python
import math
import pylab
sps2 = [math.sin(i * math.pi / 5 + 2) for i in range(100)]
pylab.plot(sps2)
pylab.title('Синусоидальный сигнал')
pylab.xlabel('Отсчеты')
pylab.ylabel('Амплитуда')
pylab.grid(True)
pylab.show()
```
Ответ программы:
![График](Graf_2.5.png)
## 3. Цикл «пока истинно условие» – управляющая инструкция while.
***Общее правило написания:***
while <Условие>:
<отступы><Блок инструкций 1 – тело цикла>
[else:
<отступы><Блок инструкций 2 – если в цикле не сработал break>]
>Здесь <Условие> - некоторое логическое выражение. Если на очередном витке цикла оно принимает значение True (или ≠0), то выполняется Блок инструкций 1. При этом, если в этом блоке присутствует инструкция break и она будет выполнена, то цикл завершается, иначе – переходит к новому витку цикла. В блоке инструкций 1 могут быть изменены значения объектов, входящих в Условие и его значение тоже может измениться, Если же его значением останется True, то вновь выполняется Блок инструкций 1 и т.д. Если в цикле присутствует Блок инструкций 2, то он будет выполнен, если завершение цикла произошло не по инструкции break, а по значению False (или значению =0) Условия.
### 3.1. Цикл со счётчиком.
```python
rashod=300
while rashod:
print("Расход=",rashod)
rashod-=50
```
Ответ программы:
```shell
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
```
Цикл завершился, потому что в Python число 0 интерпретируется как логическое значение False.
### 3.2. Пример с символьной строкой.
```python
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
```
Ответ программы:
![График 3.2](Graf_3.2.png)
### 3.3. Определение, является ли число простым (делится только на самого себя или 1).
```python
# Проверка одного числа
chislo = 267
kandidat = chislo // 2
while kandidat > 1:
if chislo % kandidat == 0:
print(chislo, ' имеет множитель ', kandidat)
break
kandidat -= 1
else:
print(chislo, ' является простым!')
print("\nПростые числа в диапазоне от 250 до 300:")
# Проверка всех чисел в диапазоне от 250 до 300
for chislo in range(250, 301):
kandidat = chislo // 2
while kandidat > 1:
if chislo % kandidat == 0:
break
kandidat -= 1
else:
print(chislo, end=' ')
```
Ответ программы:
```shell
267 имеет множитель 89
Простые числа в диапазоне от 250 до 300:
251 257 263 269 271 277 281 283 293
```
### 3.4. Continue.
>Помимо инструкции break в обоих видах циклов могут использоваться инструкции continue, которые не вызывают завершения цикла, но завершают его текущий виток и обеспечивают переход к следующему витку.
Пример: Вывод четных чисел от 1 до 10 с использованием continue.
```python
for i in range(1, 11):
if i % 2 != 0:
continue
print(i, end=' ')
```
Ответ программы:
```shell
2 4 6 8 10
```

@ -0,0 +1,129 @@
# Общее контрольное задание.
Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач:
* Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите.
* Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).
* Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
***Пункт 1:***
```python
text = "Python is an interpreted high-level programming language"
print("Исходный текст:", text)
for char in text:
if char.isalpha():
if char.isupper():
num = ord(char) - ord('A') + 1
else:
num = ord(char) - ord('a') + 1
print(f"Буква '{char}' - номер {num}")
```
Ответ программы:
```shell
Буква 'P' - номер 16
Буква 'y' - номер 25
Буква 't' - номер 20
Буква 'h' - номер 8
Буква 'o' - номер 15
Буква 'n' - номер 14
Буква 'i' - номер 9
Буква 's' - номер 19
Буква 'a' - номер 1
Буква 'n' - номер 14
Буква 'i' - номер 9
Буква 'n' - номер 14
Буква 't' - номер 20
Буква 'e' - номер 5
Буква 'r' - номер 18
Буква 'p' - номер 16
Буква 'r' - номер 18
Буква 'e' - номер 5
Буква 't' - номер 20
Буква 'e' - номер 5
Буква 'd' - номер 4
Буква 'h' - номер 8
Буква 'i' - номер 9
Буква 'g' - номер 7
Буква 'h' - номер 8
Буква 'l' - номер 12
Буква 'e' - номер 5
Буква 'v' - номер 22
Буква 'e' - номер 5
Буква 'l' - номер 12
Буква 'p' - номер 16
Буква 'r' - номер 18
Буква 'o' - номер 15
Буква 'g' - номер 7
Буква 'r' - номер 18
Буква 'a' - номер 1
Буква 'm' - номер 13
Буква 'm' - номер 13
Буква 'i' - номер 9
Буква 'n' - номер 14
Буква 'g' - номер 7
Буква 'l' - номер 12
Буква 'a' - номер 1
Буква 'n' - номер 14
Буква 'g' - номер 7
Буква 'u' - номер 21
Буква 'a' - номер 1
Буква 'g' - номер 7
Буква 'e' - номер 5
```
***Пункт 2:***
```python
words = ["Python", "is", "an", "interpreted", "high-level", "programming", "language"]
search_word = "programming"
if search_word in words:
print(f"Слово '{search_word}' найдено в списке")
else:
print(f"Слова '{search_word}' нет в списке")
search_word = "computer"
if search_word in words:
print(f"Слово '{search_word}' найдено в списке")
else:
print(f"Слова '{search_word}' нет в списке")
```
Ответ программы:
```shell
Слово 'programming' найдено в списке
Слова 'computer' нет в списке
```
***Пункт 3:***
```python
students = ["Терехов", "Жалнин", "Бушманов", "Соловьёва"]
summer_grades = [4.5, 3.8, 4.2, 4.9]
winter_students = ["Бушманов", "Соловьёва", "Терехов", "Жалнин"]
winter_grades = [4.1, 4.7, 4.3, 3.9]
surname = input("Введите фамилию студента: ")
if surname in students:
summer_index = students.index(surname)
summer_grade = summer_grades[summer_index]
winter_index = winter_students.index(surname)
winter_grade = winter_grades[winter_index]
print(f"Студент {surname}:")
print(f" Летняя сессия: {summer_grade}")
print(f" Зимняя сессия: {winter_grade}")
else:
print(f"Студент {surname} не найден в списке")
```
Ответ программы:
```shell
labs/python-labs/TEMA5/taskO3.py"
Введите фамилию студента: Терехов
Студент Терехов:
Летняя сессия: 4.5
Зимняя сессия: 4.3
```

@ -0,0 +1,11 @@
porog=100
rashod1=50
rashod2=100
if rashod1>=porog:
dohod=12
elif rashod2==porog:
dohod=0
else:
dohod=-8
print(dohod)

@ -0,0 +1,11 @@
rashod1=2
rashod2=4
porog=5
dohod=0
if rashod1>=3 and rashod2==4:
dohod=rashod1
if rashod2==porog or rashod1<rashod2:
dohod=porog
print(dohod)

@ -0,0 +1,12 @@
porog=4
if porog==3:
dohod=1
elif porog==4:
dohod=2
elif porog==5:
dohod=3
else:
dohod=0
print(dohod)

@ -0,0 +1,3 @@
porog=4
dohod=2 if porog>=4 else 0
print(dohod)

@ -0,0 +1,5 @@
porog=5
rashod1=2
rashod2=4
if porog>=5 : rashod1=6; rashod2=0
print(rashod1,rashod2)

@ -0,0 +1,4 @@
temperatura=5
for i in range(3,18,3):
temperatura+=i
print(temperatura)

@ -0,0 +1,10 @@
sps=[2,15,14,8]
for k in sps:
if len(sps)<=10:sps.append(sps[0])
else: break
print("После первого цикла:",sps)
sps=[2,15,14,8]
for k in sps[:]:
if len(sps)<=10:sps.append(sps[0])
else: break
print("После второго цикла:",sps)

@ -0,0 +1,8 @@
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)

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

@ -0,0 +1,11 @@
import math
import pylab
sps2 = [math.sin(i * math.pi / 5 + 2) for i in range(100)]
pylab.plot(sps2)
pylab.title('Синусоидальный сигнал')
pylab.xlabel('Отсчеты')
pylab.ylabel('Амплитуда')
pylab.grid(True)
pylab.show()

@ -0,0 +1,4 @@
rashod=300
while rashod:
print("Расход=",rashod)
rashod-=50

@ -0,0 +1,18 @@
import math
import pylab
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
pylab.plot(sps2)
pylab.title('Сигнал на выходе инерционного звена')
pylab.xlabel('Моменты времени')
pylab.ylabel('Значение')
pylab.grid(True)
pylab.show()

@ -0,0 +1,22 @@
# Проверка одного числа
chislo = 267
kandidat = chislo // 2
while kandidat > 1:
if chislo % kandidat == 0:
print(chislo, ' имеет множитель ', kandidat)
break
kandidat -= 1
else:
print(chislo, ' является простым!')
print("\nПростые числа в диапазоне от 250 до 300:")
# Проверка всех чисел в диапазоне от 250 до 300
for chislo in range(250, 301):
kandidat = chislo // 2
while kandidat > 1:
if chislo % kandidat == 0:
break
kandidat -= 1
else:
print(chislo, end=' ')

@ -0,0 +1,4 @@
for i in range(1, 11):
if i % 2 != 0:
continue
print(i, end=' ')

@ -0,0 +1,10 @@
text = "Python is an interpreted high-level programming language"
print("Исходный текст:", text)
for char in text:
if char.isalpha():
if char.isupper():
num = ord(char) - ord('A') + 1
else:
num = ord(char) - ord('a') + 1
print(f"Буква '{char}' - номер {num}")

@ -0,0 +1,13 @@
words = ["Python", "is", "an", "interpreted", "high-level", "programming", "language"]
search_word = "programming"
if search_word in words:
print(f"Слово '{search_word}' найдено в списке")
else:
print(f"Слова '{search_word}' нет в списке")
search_word = "computer"
if search_word in words:
print(f"Слово '{search_word}' найдено в списке")
else:
print(f"Слова '{search_word}' нет в списке")

@ -0,0 +1,19 @@
students = ["Терехов", "Жалнин", "Бушманов", "Соловьёва"]
summer_grades = [4.5, 3.8, 4.2, 4.9]
winter_students = ["Бушманов", "Соловьёва", "Терехов", "Жалнин"]
winter_grades = [4.1, 4.7, 4.3, 3.9]
surname = input("Введите фамилию студента: ")
if surname in students:
summer_index = students.index(surname)
summer_grade = summer_grades[summer_index]
winter_index = winter_students.index(surname)
winter_grade = winter_grades[winter_index]
print(f"Студент {surname}:")
print(f" Летняя сессия: {summer_grade}")
print(f" Зимняя сессия: {winter_grade}")
else:
print(f"Студент {surname} не найден в списке")
Загрузка…
Отмена
Сохранить