Основы программирования на Python Каширский / методички / Лабораторная работа № 3 2025
.pdfСоздать отчет с выравниванием колонок
2.Таблица параметров транзисторов:
transistors = [
("BC547", 200, 45, 0.1), ("2N2222", 100, 30, 0.8)
]
Создать таблицу с заголовками
3.Спецификация компонентов:
components = [
("R1", "100 Ом", 5, 0.25), ("C1", "100 мкФ", 50, 0.1)
]
Создать спецификацию с нумерацией
4.Протокол измерений:
measurements = [ (1, 3.3, 0.1, 0.33), (2, 5.0, 0.2, 1.00)
]
Создать таблицу измерений
5.Паспорт микросхемы:
chip = {
"name": "LM7805", "voltage_in": "7-35V", "voltage_out": "5V", "current": "1A"
}
Создать паспорт с рамкой
6.Этикетка компонента:
component = {
"type": "Конденсатор", "value": "100 мкФ", "voltage": "50V", "temp": "-40...+85°C"
}
Создать этикетку с границами
7.Штрих-код данных:
data = "RES-100-5%-0.25W-2024"
Создать строку в формате штрих-кода
8.График характеристик:
points = [(0, 0), (1, 0.1), (2, 0.4), (3, 0.9)]
Создать текстовый график
9.Блок-схема системы:
blocks = ["Датчик", "Усилитель", "АЦП", "Микроконтроллер"]
Создать текстовую блок-схему
10.Диаграмма состояний:
states = ["Выкл", "Вкл", "Ошибка", "Тест"]
Создать диаграмму переходов
11.Сравнение параметров:
param1 = {"name": "LM7805", "voltage": 5, "current": 1} param2 = {"name": "LM317", "voltage": "1.2-37", "current": 1.5}
Создать таблицу сравнения
12.Калькуляция стоимости:
items = [
("Резистор 100 Ом", 0.50, 10), ("Конденсатор 100 мкФ", 2.00, 5)
]
Создать счет с итогами
13.График зависимости:
data = [(1, 10), (2, 40), (3, 90), (4, 160)]
Создать график R = f(I)
14.Протокол тестирования:
tests = [
("Напряжение холостого хода", 12.1, 12.0, "OK"), ("Ток короткого замыкания", 1.2, 1.5, "FAIL")
]
Создать протокол с результатами
15.Формула с подстановкой:
formula = "I = U / R"
values = {"U": 12, "R": 100, "I": 0.12}
Создать красивую формулу
16.Таблица цветовых кодов:
colors = [
("Черный", 0, "×1"), ("Коричневый", 1, "×10"), ("Красный", 2, "×100")
]
Создать таблицу цветов
17.Распиновка микросхемы:
pins = [
(1, "VCC", "Питание +5V"), (2, "GND", "Земля"),
(3, "OUT", "Выход")
]
Создать таблицу распиновки
18.График АЧХ:
response = [
(10, -3), (100, -1), (1000, 0), (10000, -2)
]
Создать график амплитудно-частотной характеристики
19.Диаграмма временных сигналов: signal = [0, 1, 0, 1, 1, 0, 0, 1]
Создать временную диаграмму
20.Сравнение КПД:
efficiencies = [
("Линейный стабилизатор", 40), ("Импульсный стабилизатор", 85), ("Трансформатор", 90)
]
Создать диаграмму КПД
21.Таблица допусков:
tolerances = [
("±0.1%", "Фиолетовый"), ("±0.5%", "Синий"), ("±1%", "Коричневый")
]
Создать таблицу точности
22.График температурной зависимости:
temp_data = [
(-40, 150000), (0, 10000), (25, 1000), (100, 100)
]
Создать график R = f(T)
23.Сравнение технологий:
technologies = [
("ТТЛ", 5.0, 10, "Быстро"), ("КМОП", 3.3, 1, "Экономично")
]
Создать таблицу сравнения
24.Протокол калибровки:
calibration = [
("Точка 1", 1.000, 1.002, 0.002), ("Точка 2", 2.000, 1.998, -0.002)
]
Создать протокол калибровки
25.Диаграмма мощностей:
powers = [10, 25, 15, 30, 20]
labels = ["CPU", "GPU", "RAM", "IO", "Other"]
Создать круговую диаграмму
26.Таблица преобразований:
conversions = [ ("дБм", "мВт", 0, 1),
("дБм", "мВт", 10, 10), ("дБм", "мВт", 20, 100)
]
Создать таблицу преобразований
27.График заряда конденсатора:
charge = [
(0, 0), (1, 0.63), (2, 0.86), (3, 0.95)
]
Создать график заряда
28.Сравнение материалов:
materials = [
("Медь", 0.017, 56), ("Алюминий", 0.028, 37), ("Серебро", 0.016, 63)
]
Создать таблицу материалов
29.Протокол измерений сопротивления:
resistance_measure = [ ("R1", 998, 1000, -0.2), ("R2", 1005, 1000, 0.5)
]
Создать протокол измерений
30.Диаграмма состояний триггера:
states = ["00", "01", "11", "10"]
transitions = ["→01", "→11", "→10", "→00"]
Создать диаграмму состояний
Задание 8
Используя range сгенерировать последовательность значений. Осуществить вычисления и вывести их результат в терминал.
1.Напряжения от 0 до 10 В с шагом 1 В. R = 100 Ом. Найти: токи для каждого напряжения.
2.Сопротивления от 100 до 1000 Ом с шагом 100 Ом. U = 12 В. Найти: токи для каждого сопротивления.
3.Частоты от 1 кГц до 10 кГц с шагом 1 кГц. C = 100 нФ. Найти: ёмкостное сопротивление (Xc) для каждой частоты.
4.Индуктивности от 1 мГн до 10 мГн с шагом 1 мГн. f = 1000 Гц. Найти: индуктивное сопротивление (XL) для каждой индуктивности.
5.Времена от 0 до 5 с с шагом 1 с. I = 2 А, U = 12 В. Найти: выделенную теплоту (работу) для каждого промежутка времени.
6.Температуры от 0 до 100°C с шагом 20°C. R0 = 100 Ом, α = 0.004 1/°C. Найти:
сопротивления для каждой температуры.
7.Скважности ШИМ от 0% до 100% с шагом 20%. Период T = 1000 мс. Найти: длительности импульсов для каждой скважности.
8.Напряжения от 10 В до 20 В с шагом 2 В. I = 0.5 А. Найти: мощности для каждого напряжения.
9.Токи от 0.1 А до 1.0 А с шагом 0.1 А. R = 50 Ом. Найти: мощности для каждого
тока.
10.Частоты от 100 Гц до 1000 Гц с шагом 100 Гц. L = 0.1 Гн. Найти: индуктивное сопротивление (XL) для каждой частоты.
11.Ёмкости от 10 мкФ до 100 мкФ с шагом 10 мкФ. f = 50 Гц. Найти: ёмкостное сопротивление (Xc) для каждой ёмкости.
12.Сопротивления от 10 Ом до 100 Ом с шагом 10 Ом. U = 24 В. Найти: токи для каждого сопротивления.
13.Времена от 0.1 с до 1.0 с с шагом 0.1 с. P = 100 Вт. Найти: потребленную энергию для каждого промежутка времени.
14.Напряжения от 3 В до 15 В с шагом 3 В. I = 0.2 А. Найти: сопротивления нагрузки для каждого напряжения.
15.Частоты от 10 кГц до 100 кГц с шагом 10 кГц. L = 10 мкГн, C = 100 нФ. Найти: резонансную частоту (f ) и проверить её совпадение с заданными частотами.
16.Температуры от -20°C до +80°C с шагом 20°C. Терморезистор: R = 10 кОм (при 25°C), B = 3950 K. Найти: сопротивления для каждой температуры.
17.Сопротивления от 1 кОм до 10 кОм с шагом 1 кОм. U = 5 В. Найти: токи для каждого сопротивления.
18.Времена от 0 до 10 мс с шагом 2 мс. f = 100 Гц. Найти: фазы (в радианах и градусах) для каждого момента времени.
19.Напряжения от 0.5 В до 5.0 В с шагом 0.5 В. R = 100 Ом. Найти: токи для каждого напряжения.
20.Частоты от 1 МГц до 10 МГц с шагом 1 МГц. Волновое сопротивление Z = 50 Ом, скорость света c ≈ 3·10 м/с. Найти: длины волн для каждой частоты.
21.Сопротивления от 100 Ом до 500 Ом с шагом 50 Ом. I = 0.1 А. Найти: падения напряжения для каждого сопротивления.
22.Времена от 0 до 100 мкс с шагом 10 мкс. f = 10 кГц. Найти: периоды сигнала и отношение заданного времени к периоду.
23.Напряжения от 12 В до 24 В с шагом 2 В. P = 50 Вт. Найти: токи для каждого напряжения.
24.Частоты от 50 Гц до 500 Гц с шагом 50 Гц. C = 47 мкФ. Найти: ёмкостное сопротивление (Xc) для каждой частоты.
25.Сопротивления от 1 Ом до 5 Ом с шагом 0.5 Ом. U = 12 В. Найти: токи для каждого сопротивления.
26.Времена от 0 до 60 с с шагом 10 с. I = 2 А. Найти: заряды, прошедшие за каждое
время.
27.Напряжения от 0 В до 30 В с шагом 5 В. Стабилизатор с Uст = 12 В. Найти: рассеиваемую мощность на стабилизаторе для каждого входного напряжения (при постоянном токе нагрузки).
28.Частоты от 100 Гц до 1000 Гц с шагом 100 Гц. R = 1 кОм, C = 0.1 мкФ. Найти: постоянную времени RC-цепи и отношение периода сигнала к постоянной времени.
29.Сопротивления от 10 кОм до 100 кОм с шагом 10 кОм. U = 10 В. Найти: токи для каждого сопротивления.
30. Времена от 0 до 24 часа с шагом 4 часа. P = 1 кВт. Найти: потребленную энергию для каждого промежутка времени.
Задание 9
Использовать срезы и индексацию для обработки массивов данных измерений.
Варианты:
1.Данные АЦП: [125, 130, 128, 135, 140, 138, 132]. Найти: первые 3, последние 3,
каждый второй элемент.
2.Температуры: [20.1, 20.3, 20.5, 20.8, 21.0, 20.9, 20.7]. Найти: измерения за первые
5 мин, последние 2 мин.
3.Напряжения: [3.2, 3.3, 3.1, 3.4, 3.5, 3.3, 3.2]. Найти: максимальное в первой половине, минимальное во второй.
4.Токи: [0.09, 0.11, 0.10, 0.12, 0.13, 0.11, 0.10]. Найти: среднюю часть данных,
инвертированный порядок.
5.Сопротивления: [998, 1002, 999, 1001, 1003, 997, 1000]. Найти: элементы с 2 по
5, каждый третий элемент.
6.Частоты: [999, 1001, 1000, 1002, 998, 1001, 999]. Найти: первую и вторую половины, реверс массива.
7.Мощности: [45, 47, 46, 48, 49, 47, 46]. Найти: элементы больше среднего, меньше
среднего.
8.Времена включения: [1.1, 1.2, 1.0, 1.3, 1.4, 1.2, 1.1].Н айти: быстрые и медленные срабатывания.
9.Уровни сигнала: [0.9, 1.1, 1.0, 1.2, 1.3, 1.1, 1.0]. Найти: сигналы выше и ниже порога 1.1В.
10.Фазы: [0, 45, 90, 135, 180, 225, 270]. Найти: четверти периода.
11.Длительности импульсов: [10, 12, 11, 13, 14, 12, 11]. Найти: короткие и длинные
импульсы.
12.Скважности: [45, 55, 50, 60, 65, 55, 50]. Найти: оптимальные значения 50-60%.
13.Сопротивления измерительных мостов: [100.1, 99.9, 100.2, 99.8, 100.0]. Найти: точные измерения ±0.1%.
14.Напряжения стабилизации: [4.9, 5.1, 5.0, 5.2, 4.8, 5.1, 5.0]. Найти: значения в допуске 5.0±0.1В.
15.Токи потребления: [0.09, 0.11, 0.10, 0.12, 0.08, 0.11, 0.10]. Найти: экономичные
режимы.
16.Частоты генераторов: [999.5, 1000.5, 1000.0, 1001.0, 999.0]. Найти: стабильные значения ±0.5 Гц.
17.Температуры переходов: [85, 87, 86, 88, 89, 87, 86]. Найти: критические значения
>87°C.
18.Коэффициенты усиления: [99, 101, 100, 102, 98, 101, 100]. Найти: точные значения 100±1%.
19.Времена задержки: [9.5, 10.5, 10.0, 11.0, 9.0, 10.5, 10.0]. Найти: задержки в диапазоне 10±0.5 нс.
20.Напряжения смещения: [-1.1, 1.1, 0, 1.2, -1.2, 1.1, 0]. Найти: положительные и отрицательные смещения.
21.Токи утечки: [0.001, 0.002, 0.0015, 0.0025, 0.0005]. Найти: допустимые значения
<0.002 мА.
22.Сопротивления изоляции: [100.5, 99.5, 100.0, 101.0, 99.0]. Найти: значения в допуске 100±0.5 Мом.
23.Емкости конденсаторов: [99, 101, 100, 102, 98, 101, 100]. Найти: номинальные значения 100±1%.
24.Индуктивности катушек: [10.1, 9.9, 10.2, 9.8, 10.0]. Найти: точные значения
10.0±0.1 мГн.
25.Коэффициенты нелинейных искажений: [1.1, 0.9, 1.0, 1.2, 0.8]. Найти: значения
<1.0%.
26.Уровни шума: [-61, -59, -60, -58, -62]. Найти: значения < -60 дБ.
27.Добротности контуров: [99, 101, 100, 102, 98]. Найти: высокодобротные >100.
28.КПД преобразователей: [85, 87, 86, 88, 84]. Найти: высокоэффективные >86%.
29.Частоты среза фильтров: [995, 1005, 1000, 1010, 990]. Найти: точные настройки
1000±5 Гц.
30.Времена нарастания импульсов: [9.8, 10.2, 10.0, 10.4, 9.6]. Найти: быстрые фронты <10 нс.
Задание 10
Создать указанную структуру данных. Извлечь конкретные значения по ключам и индексам. Выполнить требуемые расчеты и вывести результаты в указанном формате.
Вариант 1: Проект блока питания
Создать словарь с информацией о проекте блока питания. Извлечь и вывести:
1.Название проекта и автора
2.Общее количество компонентов
1.Список всех компонентов с их типами
3.Количество резисторов и конденсаторов отдельно
project = {
"name": "Блок питания 5В", "author": "Иванов И.И.", "components": [
{"name": "R1", "type": "резистор", "value": "100 Ом"}, {"name": "C1", "type": "конденсатор", "value": "100 мкФ"}, {"name": "D1", "type": "диод", "value": "1N4007"}, {"name": "U1", "type": "микросхема", "value": "LM7805"}
]
}
Вариант 2: База тестовых результатов
Создать список с результатами тестирования компонентов. Для каждого компонента вывести:
1.Название компонента и его номинальное значение
2.Измеренное значение и отклонение в процентах
3.Статус тестирования
test_results = [
{"component": "R1", "measured": 99.5, "nominal": 100, "status": "OK"}, {"component": "C1", "measured": 95, "nominal": 100, "status": "LOW"}, {"component": "D1", "measured": 0.7, "nominal": 0.6, "status": "HIGH"}
]
Вариант 3: Модель электрической схемы
Создать список узлов схемы. Для каждого узла вывести:
1.Название узла и напряжение на нем
2.Ток через узел
3.Мощность на каждом узле
4.Общую потребляемую мощность
nodes = [
{"node": "Vcc", "voltage": 12.0, "current": 0.1}, {"node": "Vout", "voltage": 6.0, "current": 0.08}, {"node": "GND", "voltage": 0.0, "current": 0.02}
]
Вариант 4: Библиотека компонентов
Создать словарь с библиотекой компонентов. Вывести:
1.Список всех доступных резисторов с их параметрами
2.Общее количество резисторов на складе
3.Самый мощный резистор
4.Конденсатор с максимальным напряжением
library = { "резисторы": [
{"value": 100, "power": 0.25, "stock": 50}, {"value": 1000, "power": 0.5, "stock": 25}, {"value": 10000, "power": 1.0, "stock": 10}
], "конденсаторы": [
{"value": 100, "voltage": 50, "stock": 30}, {"value": 1000, "voltage": 25, "stock": 15}
]
}
Вариант 5: Система сбора данных
Создать словарь с данными измерений. Рассчитать и вывести:
1.Среднее значение напряжения и тока
2.Максимальное и минимальное напряжение
3.Размах измерений напряжения
4.Последнее измеренное значение тока
measurements = {
"voltage": [3.2, 3.3, 3.1, 3.4, 3.35], "current": [0.09, 0.11, 0.10, 0.12, 0.115], "time": [0, 1, 2, 3, 4]
}
Вариант 6: Протокол калибровки
Создать протокол калибровки прибора. Вывести:
1.Информацию о приборе и дате калибровки
2.Все калибровочные точки с ошибками
3.Среднюю ошибку калибровки
4.Точку с максимальной ошибкой
calibration = {
"instrument": "Мультиметр DT9205A", "date": "2024-01-15",
"points": [
{"nominal": 1.000, "measured": 1.002, "error": 0.002},
{"nominal": 2.000, "measured": 1.998, "error": -0.002}, {"nominal": 5.000, "measured": 5.005, "error": 0.005}
]
}
Вариант 7: Модель печатной платы
Создать структуру печатной платы. Вывести:
1.Основные параметры платы
2.Полный список компонентов
3.Количество компонентов каждого типа
4.Процентное соотношение типов компонентов
pcb = {
"name": "Контроллер вентиляции", "size": "100x80 мм",
"layers": 2,
"components": ["R1", "R2", "C1", "C2", "U1", "Q1", "D1", "L1"]
}
Вариант 8: Модель системы питания
Создать модель системы питания. Рассчитать:
1.Суммарную выходную мощность
2.КПД системы питания
3.Наиболее мощный канал
4.Соотношение мощностей каналов
power_system = {
"input": {"voltage": 220, "current": 0.5, "power": 110}, "outputs": [
{"name": "5V", "voltage": 5, "current": 2, "power": 10}, {"name": "12V", "voltage": 12, "current": 1, "power": 12}, {"name": "3.3V", "voltage": 3.3, "current": 0.5, "power": 1.65}
]
}
Вариант 9: Характеристики датчика
Создать модель датчика температуры. Рассчитать:
1.Чувствительность датчика по калибровочным точкам
2.Диапазон измеряемых температур
3.Выходное напряжение для температуры 50°C
4.Погрешность линейности
sensor = {
"type": "LM35", "range": [-55, 150], "calibration": [
{"temp": 0, "voltage": 0.000}, {"temp": 25, "voltage": 0.250}, {"temp": 100, "voltage": 1.000}
]
}
