SneguraDS 2 недель назад
Родитель 11f2e63cc7
Сommit b8d4929f47

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

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

После

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

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

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

После

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

@ -0,0 +1,159 @@
# общее контрольное задание
## 1. Для заданной символьной строки с англоязычным текстом определите порядковый номер каждой буквы в английском алфавите.
```py
def letter_positions(text): #Объявление функции с именем letter_positions, которая принимает один параметр text (текст для анализа).
"""Определяет порядковый номер каждой буквы в английском алфавите""" #Строка документации - описание того, что делает функция.
result = {} #Создание пустого словаря result, где: ключи - буквы алфавита;значения - списки позиций этих букв в тексте
for char in text.lower(): #Цикл по каждому символу текста. Метод .lower() преобразует весь текст в нижний регистр, чтобы 'A' и 'a' считались одинаковыми буквами.
if 'a' <= char <= 'z': #Проверка: является ли символ английской буквой. Отсеивает пробелы, цифры, знаки препинания и т.д.
position = ord(char) - ord('a') + 1 #Вычисление порядкового номера буквы: ord(char) - получает ASCII-код символа; ord('a') - ASCII-код буквы 'a' (97); Вычитание дает смещение от 'a' (например: 'c' - 'a' = 2); + 1 - чтобы нумерация была с 1, а не с 0
if char in result: #Проверка: есть ли уже такая буква в словаре
result[char].append(position) #Если буква уже есть - добавляем новую позицию в существующий список
else:
result[char] = [position] #Если буквы еще нет - создаем новую запись в словаре со списком из одной позиции
return result #Возврат результата - готового словаря с позициями всех букв
# Текст из помощи Python
help_text = "Python is an interpreted, high-level, general-purpose programming language."
positions = letter_positions(help_text)
print("1. Порядковые номера букв в тексте:")
1. Порядковые номера букв в тексте:
for letter, pos_list in positions.items():
print(f"Буква '{letter}': позиции {pos_list}")
Буква 'p': позиции [16, 16, 16, 16, 16]
Буква 'y': позиции [25]
Буква 't': позиции [20, 20, 20]
Буква 'h': позиции [8, 8, 8]
Буква 'o': позиции [15, 15, 15]
Буква 'n': позиции [14, 14, 14, 14, 14, 14]
Буква 'i': позиции [9, 9, 9, 9]
Буква 's': позиции [19, 19]
Буква 'a': позиции [1, 1, 1, 1, 1]
Буква 'e': позиции [5, 5, 5, 5, 5, 5, 5, 5, 5]
Буква 'r': позиции [18, 18, 18, 18, 18, 18]
Буква 'd': позиции [4]
Буква 'g': позиции [7, 7, 7, 7, 7, 7]
Буква 'l': позиции [12, 12, 12, 12]
Буква 'v': позиции [22]
Буква 'u': позиции [21, 21]
Буква 'm': позиции [13, 13]
```
## 2. Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение.
```py
# Создаем список из слов этого задания
task_words = ["Для", "заданной", "символьной", "строки", "с", "англоязычным",
"текстом", "определите", "порядковый", "номер", "каждой", "буквы"]
print("\n2. Поиск слова в списке:")
2. Поиск слова в списке:
print(f"Список слов: {task_words}")
Список слов: ['Для', 'заданной', 'символьной', 'строки', 'с', 'англоязычным', 'текстом', 'определите', 'порядковый', 'номер', 'каждой', 'буквы']
# Проверяем наличие существующего слова
search_word = "строки"
if search_word in task_words:
print(f"Слово '{search_word}' найдено в списке")
else:
print(f"Слово '{search_word}' отсутствует в списке")
Слово 'строки' найдено в списке
# Проверяем наличие отсутствующего слова
search_word = "программирование"
if search_word in task_words:
print(f"Слово '{search_word}' найдено в списке")
else:
print(f"Слово '{search_word}' отсутствует в списке")
Слово 'программирование' отсутствует в списке
```
## 3. Создайте список студентов и списки баллов
```py
# Список студентов
students = ["Снегура", "Туровец", "Ефремов", "Хатюхин"]
# Баллы за летнюю сессию (в порядке списка студентов)
summer_grades = [4.5, 3.8, 4.2, 4.7]
# Баллы за зимнюю сессию (в другом порядке)
winter_grades = [4.3, 4.6, 3.9, 4.8]
print("\n3. Поиск средних баллов студента:")
3. Поиск средних баллов студента:
# Запрашиваем фамилию студента
student_name = input("Введите фамилию студента: ")
Введите фамилию студента: Снегура
if student_name in students:
# Находим индекс студента
student_index = students.index(student_name)
# Получаем баллы за летнюю сессию
summer_grade = summer_grades[student_index]
# Для зимней сессии создаем словарь для быстрого поиска
winter_dict = dict(zip(students, winter_grades))
winter_grade = winter_dict[student_name]
print(f"Студент {student_name}:")
print(f" Летняя сессия: {summer_grade}")
print(f" Зимняя сессия: {winter_grade}")
print(f" Средний балл: {(summer_grade + winter_grade) / 2:.2f}")
else:
print(f"Студент {student_name} не найден в списке")
Студент Снегура:
Летняя сессия: 4.5
Зимняя сессия: 4.3
Средний балл: 4.40
# Дополнительно: вывод всех студентов с их баллами
for i, student in enumerate(students):
winter_grade = winter_grades[i] # winter_grades уже в правильном порядке
print(f"{student}: лето - {summer_grades[i]}, зима - {winter_grade}")
# Сохранение результатов в файл
with open('control_task_results.txt', 'w', encoding='utf-8') as f:
f.write("Результаты выполнения контрольного задания\n")
f.write("=" * 50 + "\n\n")
f.write("1. Порядковые номера букв в тексте:\n")
for letter, pos_list in positions.items():
f.write(f"Буква '{letter}': позиции {pos_list}\n")
f.write("\n2. Результаты поиска слов:\n")
f.write(f"Слово 'строки' найдено: {'строки' in task_words}\n")
f.write(f"Слово 'программирование' найдено: {'программирование' in task_words}\n")
f.write("\n3. Данные студентов:\n")
for i, student in enumerate(students):
f.write(f"{student}: лето - {summer_grades[i]}, зима - {winter_grades[i]}\n")
43
52
36
40
24
32
29
32
44
32
28
35
47
44
23
38
36
24
28
28
28
29
40
22
32
32
32
32
print("\nРезультаты сохранены в файл 'control_task_results.txt'")
Результаты сохранены в файл 'control_task_results.txt'
```

@ -0,0 +1,157 @@
Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32
Enter "help" below or click "Help" above for more information.
def letter_positions(text):
"""Определяет порядковый номер каждой буквы в английском алфавите"""
result = {}
for char in text.lower():
if 'a' <= char <= 'z':
position = ord(char) - ord('a') + 1
if char in result:
result[char].append(position)
else:
result[char] = [position]
return result
help_text = "Python is an interpreted, high-level, general-purpose programming language."
positions = letter_positions(help_text)
print("1. Порядковые номера букв в тексте:")
1. Порядковые номера букв в тексте:
for letter, pos_list in positions.items():
print(f"Буква '{letter}': позиции {pos_list}")
Буква 'p': позиции [16, 16, 16, 16, 16]
Буква 'y': позиции [25]
Буква 't': позиции [20, 20, 20]
Буква 'h': позиции [8, 8, 8]
Буква 'o': позиции [15, 15, 15]
Буква 'n': позиции [14, 14, 14, 14, 14, 14]
Буква 'i': позиции [9, 9, 9, 9]
Буква 's': позиции [19, 19]
Буква 'a': позиции [1, 1, 1, 1, 1]
Буква 'e': позиции [5, 5, 5, 5, 5, 5, 5, 5, 5]
Буква 'r': позиции [18, 18, 18, 18, 18, 18]
Буква 'd': позиции [4]
Буква 'g': позиции [7, 7, 7, 7, 7, 7]
Буква 'l': позиции [12, 12, 12, 12]
Буква 'v': позиции [22]
Буква 'u': позиции [21, 21]
Буква 'm': позиции [13, 13]
task_words = ["Для", "заданной", "символьной", "строки", "с", "англоязычным",
"текстом", "определите", "порядковый", "номер", "каждой", "буквы"]
print("\n2. Поиск слова в списке:")
2. Поиск слова в списке:
print(f"Список слов: {task_words}")
Список слов: ['Для', 'заданной', 'символьной', 'строки', 'с', 'англоязычным', 'текстом', 'определите', 'порядковый', 'номер', 'каждой', 'буквы']
search_word = "строки"
if search_word in task_words:
print(f"Слово '{search_word}' найдено в списке")
else:
print(f"Слово '{search_word}' отсутствует в списке")
Слово 'строки' найдено в списке
search_word = "программирование"
if search_word in task_words:
print(f"Слово '{search_word}' найдено в списке")
else:
print(f"Слово '{search_word}' отсутствует в списке")
Слово 'программирование' отсутствует в списке
students = ["Снегура", "Туровец", "Ефремов", "Хатюхин"]
summer_grades = [4.5, 3.8, 4.2, 4.7]
winter_grades = [4.3, 4.6, 3.9, 4.8]
print("\n3. Поиск средних баллов студента:")
3. Поиск средних баллов студента:
student_name = input("Введите фамилию студента: ")
Введите фамилию студента: Снегура
if student_name in students:
# Находим индекс студента
student_index = students.index(student_name)
# Получаем баллы за летнюю сессию
summer_grade = summer_grades[student_index]
# Для зимней сессии создаем словарь для быстрого поиска
winter_dict = dict(zip(students, winter_grades))
winter_grade = winter_dict[student_name]
print(f"Студент {student_name}:")
print(f" Летняя сессия: {summer_grade}")
print(f" Зимняя сессия: {winter_grade}")
print(f" Средний балл: {(summer_grade + winter_grade) / 2:.2f}")
else:
print(f"Студент {student_name} не найден в списке")
Студент Снегура:
Летняя сессия: 4.5
Зимняя сессия: 4.3
Средний балл: 4.40
print("\nВсе студенты и их баллы:")
for i, student in enumerate(students):
winter_grade = winter_grades[i] # winter_grades уже в правильном порядке
print(f"{student}: лето - {summer_grades[i]}, зима - {winter_grade}")
SyntaxError: multiple statements found while compiling a single statement
print("\nВсе студенты и их баллы:")
Все студенты и их баллы:
for i, student in enumerate(students):
winter_grade = winter_grades[i] # winter_grades уже в правильном порядке
print(f"{student}: лето - {summer_grades[i]}, зима - {winter_grade}")
Снегура: лето - 4.5, зима - 4.3
Туровец: лето - 3.8, зима - 4.6
Ефремов: лето - 4.2, зима - 3.9
Хатюхин: лето - 4.7, зима - 4.8
with open('control_task_results.txt', 'w', encoding='utf-8') as f:
f.write("Результаты выполнения контрольного задания\n")
f.write("=" * 50 + "\n\n")
f.write("1. Порядковые номера букв в тексте:\n")
for letter, pos_list in positions.items():
f.write(f"Буква '{letter}': позиции {pos_list}\n")
f.write("\n2. Результаты поиска слов:\n")
f.write(f"Слово 'строки' найдено: {'строки' in task_words}\n")
f.write(f"Слово 'программирование' найдено: {'программирование' in task_words}\n")
f.write("\n3. Данные студентов:\n")
for i, student in enumerate(students):
f.write(f"{student}: лето - {summer_grades[i]}, зима - {winter_grades[i]}\n")
43
52
36
40
24
32
29
32
44
32
28
35
47
44
23
38
36
24
28
28
28
29
40
22
32
32
32
32
>>> print("\nРезультаты сохранены в файл 'control_task_results.txt'")
Результаты сохранены в файл 'control_task_results.txt'

@ -0,0 +1,182 @@
Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32
Enter "help" below or click "Help" above for more information.
rashod=300
while rashod:
print("Расход=",rashod)
rashod-=50
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
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
sps2
[0.0, 0.049958374957880025, 0.09966799462495568, 0.14888503362331795, 0.197375320224904, 0.2449186624037092, 0.2913126124515909, 0.3363755443363322, 0.3799489622552249, 0.421899005250008, 0.4621171572600098, 0.5005202111902354, 0.5370495669980353, 0.5716699660851172, 0.6043677771171636, 0.6351489523872873, 0.6640367702678489, 0.6910694698329307, 0.7162978701990245, 0.7397830512740043, 0.7615941559557649, 0.7818063576087741, 0.8004990217606297, 0.8177540779702878, 0.8336546070121553, 0.8482836399575129, 0.8617231593133063, 0.874053287886007, 0.8853516482022625, 0.8956928738431645, 0.9051482536448664, 0.9137854901178277, 0.9216685544064713, 0.9288576214547277, 0.935409070603099, 0.9413755384972874, 0.9468060128462683, 0.9517459571646616, 0.9562374581277391]
stroka = 'Расчет процесса в объекте регулирования'
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) # Запоминаем момент времени
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
plt.plot(time_points, sps2, 'b-', marker='o', linewidth=2, markersize=4, label='Выходной сигнал инерционного звена')
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
plt.plot(time_points, sps2, 'b-', marker='o', linewidth=2, markersize=4, label='Выходной сигнал инерционного звена')
NameError: name 'plt' is not defined
import matplotlib.pyplot as plt
plt.plot(time_points, sps2, 'b-', marker='o', linewidth=2, markersize=4, label='Выходной сигнал инерционного звена')
[<matplotlib.lines.Line2D object at 0x000001B8EE6F9450>]
plt.title('Сигнал на выходе инерционного звена\n(Переходная характеристика)')
Text(0.5, 1.0, 'Сигнал на выходе инерционного звена\n(Переходная характеристика)')
plt.xlabel('Время, i (дискр. отсчеты)')
Text(0.5, 0, 'Время, i (дискр. отсчеты)')
plt.ylabel('Значение сигнала, r(i)')
Text(0, 0.5, 'Значение сигнала, r(i)')
plt.grid(True, which='major', linestyle='--', linewidth=0.5)
plt.legend()
<matplotlib.legend.Legend object at 0x000001B8EE711010>
plt.show()
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
for chislo in range(250, 301):
if chislo < 2: # Числа меньше 2 не являются простыми
continue
...
...
>>>
>>>
>>>
>>> for chislo in range(250, 301):
... if chislo < 2: # Числа меньше 2 не являются простыми
... continue
...
... # Проверяем делители от 2 до квадратного корня из числа (оптимизация)
... kandidat = int(chislo ** 0.5) + 1
... is_prime = True
...
... while kandidat > 1:
... if chislo % kandidat == 0:
... # Найден делитель, число не простое
... is_prime = False
... break
... kandidat -= 1
...
... if is_prime:
... print(chislo, 'является простым!')
...
...
251 является простым!
257 является простым!
263 является простым!
269 является простым!
271 является простым!
277 является простым!
281 является простым!
283 является простым!
293 является простым!

@ -0,0 +1,137 @@
Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32
Enter "help" below or click "Help" above for more information.
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
12
del dohod
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
del dohod
dohod=2 if porog>=4 else 0
dohod
2
if porog>=5 : rashod1=6; rashod2=0
rashod1
7
rashod2
11
temperatura=5
for i in range(3,18,3):
temperatura+=i
SyntaxError: multiple statements found while compiling a single statement
temperatura=5
for i in range(3,18,3):
temperatura+=i
temperatura
50
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]
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]
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
for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
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
stroka='Это – автоматизированная система'
stroka1=""
for ss in stroka:
stroka1+=" "+ss
SyntaxError: multiple statements found while compiling a single statement
stroka='Это – автоматизированная система'
stroka1=""
for ss in stroka:
stroka1+=" "+ss
>>> stroka1
' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а'
>>> import math
>>> sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
>>> sps2
[0.9092974268256817, 0.49103209793281005, -0.11479080280322804, -0.6767675184643197, -0.9802420445539634, -0.9092974268256817, -0.49103209793281016, 0.11479080280322791, 0.6767675184643196, 0.9802420445539634, 0.9092974268256818, 0.4910320979328103, -0.1147908028032278, -0.6767675184643196, -0.9802420445539632, -0.9092974268256818, -0.4910320979328104, 0.11479080280322768, 0.6767675184643195, 0.9802420445539632, 0.9092974268256819, 0.4910320979328105, -0.11479080280322579, -0.6767675184643194, -0.9802420445539632, -0.9092974268256819, -0.4910320979328106, 0.11479080280322743, 0.6767675184643193, 0.9802420445539632, 0.909297426825682, 0.49103209793281066, -0.1147908028032273, -0.6767675184643192, -0.9802420445539632, -0.909297426825682, -0.4910320979328108, 0.11479080280322719, 0.6767675184643192, 0.9802420445539631, 0.9092974268256822, 0.491032097932814, -0.11479080280322707, -0.676767518464319, -0.9802420445539625, -0.9092974268256822, -0.491032097932811, 0.11479080280323047, 0.6767675184643189, 0.9802420445539625, 0.9092974268256822, 0.4910320979328142, -0.11479080280322682, -0.6767675184643215, -0.9802420445539631, -0.9092974268256808, -0.4910320979328112, 0.11479080280322317, 0.6767675184643187, 0.9802420445539624, 0.9092974268256823, 0.4910320979328082, -0.11479080280322658, -0.6767675184643213, -0.980242044553963, -0.9092974268256838, -0.49103209793281144, 0.11479080280322293, 0.6767675184643186, 0.9802420445539637, 0.9092974268256824, 0.49103209793280844, -0.11479080280322633, -0.6767675184643158, -0.980242044553963, -0.9092974268256839, -0.49103209793281166, 0.11479080280322974, 0.6767675184643184, 0.9802420445539637, 0.9092974268256825, 0.4910320979328149, -0.11479080280321903, -0.6767675184643209, -0.9802420445539629, -0.909297426825681, -0.4910320979328119, 0.11479080280322244, 0.6767675184643129, 0.9802420445539636, 0.9092974268256826, 0.49103209793281505, -0.11479080280322584, -0.6767675184643155, -0.9802420445539644, -0.9092974268256812, -0.49103209793281205, 0.1147908028032222, 0.6767675184643127, 0.980242044553965]

@ -0,0 +1,297 @@
# Тема 5. Блоки инструкций, управляющие инструкции
## 2. Изучите ветвление по условию – управляющая инструкция if. Общее правило написания:
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
del dohod
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
del dohod
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]
#Отличие: Во втором случае используется sps[:] - это создает копию списка для итерации.
```
### 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)
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 → цикл прерывается → else НЕ выполняется
```
### 3.4.
```py
stroka='Это – автоматизированная система'
stroka1=""
for ss in stroka:
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()
```
![alt text]({CB8B8C9B-3DFE-45B6-85B7-10ABD03573AA}.png)
## 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 = []
time_points = [] # Создадим список для моментов времени
while i < len(stroka):
r = 1 - 2 / (1 + math.exp(0.1 * i))
sps2.append(r)
time_points.append(i) # Запоминаем момент времени
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
import matplotlib.pyplot as plt
plt.plot(time_points, sps2, 'b-', marker='o', linewidth=2, markersize=4, label='Выходной сигнал инерционного звена')
[<matplotlib.lines.Line2D object at 0x000001B8EE6F9450>]
plt.title('Сигнал на выходе инерционного звена\n(Переходная характеристика)')
Text(0.5, 1.0, 'Сигнал на выходе инерционного звена\n(Переходная характеристика)')
plt.xlabel('Время, i (дискр. отсчеты)')
Text(0.5, 0, 'Время, i (дискр. отсчеты)')
plt.ylabel('Значение сигнала, r(i)')
Text(0, 0.5, 'Значение сигнала, r(i)')
plt.grid(True, which='major', linestyle='--', linewidth=0.5)
plt.legend()
<matplotlib.legend.Legend object at 0x000001B8EE711010>
plt.show()
```
![alt text]({82E82C36-9007-4A55-9244-B2D65C9C50FB}.png)
### 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):
if chislo < 2: # Числа меньше 2 не являются простыми
continue
# Проверяем делители от 2 до квадратного корня из числа (оптимизация)
#Если число составное, то у него есть хотя бы один делитель, не превышающий его квадратного корня. Поэтому достаточно проверять делители только до √n, так как больший делитель автоматически подразумевает существование меньшего парного делителя.
kandidat = int(chislo ** 0.5) + 1
is_prime = True
while kandidat > 1:
if chislo % kandidat == 0:
# Найден делитель, число не простое
is_prime = False
break
kandidat -= 1
if is_prime:
print(chislo, 'является простым!')
251 является простым!
257 является простым!
263 является простым!
269 является простым!
271 является простым!
277 является простым!
281 является простым!
283 является простым!
293 является простым!
```

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

После

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

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

После

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

Загрузка…
Отмена
Сохранить