diff --git a/TEMA5/Figure_1.png b/TEMA5/Figure_1.png new file mode 100644 index 0000000..1cb4e09 Binary files /dev/null and b/TEMA5/Figure_1.png differ diff --git a/TEMA5/Figure_2.png b/TEMA5/Figure_2.png new file mode 100644 index 0000000..9620eae Binary files /dev/null and b/TEMA5/Figure_2.png differ diff --git a/TEMA5/obshee_kz.md b/TEMA5/obshee_kz.md new file mode 100644 index 0000000..115a610 --- /dev/null +++ b/TEMA5/obshee_kz.md @@ -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' +``` \ No newline at end of file diff --git a/TEMA5/obshee_kz.py b/TEMA5/obshee_kz.py new file mode 100644 index 0000000..587e62e --- /dev/null +++ b/TEMA5/obshee_kz.py @@ -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' diff --git a/TEMA5/otche.py b/TEMA5/otche.py new file mode 100644 index 0000000..230b42e --- /dev/null +++ b/TEMA5/otche.py @@ -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", line 1, in + 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='Выходной сигнал инерционного звена') +[] +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() + +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 является простым! diff --git a/TEMA5/otchet.py b/TEMA5/otchet.py new file mode 100644 index 0000000..9d0d877 --- /dev/null +++ b/TEMA5/otchet.py @@ -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=3 and rashod2==4: + dohod=rashod1 + if rashod2==porog or rashod1", line 1, in + 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] diff --git a/TEMA5/report.md b/TEMA5/report.md new file mode 100644 index 0000000..60cd8ae --- /dev/null +++ b/TEMA5/report.md @@ -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", line 1, in + 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) +[] +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='Выходной сигнал инерционного звена') +[] +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() + +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 является простым! +``` \ No newline at end of file diff --git a/TEMA5/{82E82C36-9007-4A55-9244-B2D65C9C50FB}.png b/TEMA5/{82E82C36-9007-4A55-9244-B2D65C9C50FB}.png new file mode 100644 index 0000000..db10993 Binary files /dev/null and b/TEMA5/{82E82C36-9007-4A55-9244-B2D65C9C50FB}.png differ diff --git a/TEMA5/{CB8B8C9B-3DFE-45B6-85B7-10ABD03573AA}.png b/TEMA5/{CB8B8C9B-3DFE-45B6-85B7-10ABD03573AA}.png new file mode 100644 index 0000000..91b47ef Binary files /dev/null and b/TEMA5/{CB8B8C9B-3DFE-45B6-85B7-10ABD03573AA}.png differ