Основы программирования на Python Каширский / методички / Лабораторная работа № 3 2025
.pdf–add(elem)– добавляем элемент elem в множество st.
–remove(elem) – удаляет элемент elem из множества st. Если элемент не находится
вмножестве, возникает ошибка.
–discard(elem) –удаляет элемент elem из множества st, если он присутствует в множестве.
–pop() –удаляет произвольный элемент из множества st и возвращает в качестве результата.
–clear() – удаляет все элементы из множества.
Множества поддерживают математические операции, характерные для множеств (пересечение, объединение и др.). Пусть st - множество, на котором вызывается метод:
–union(other, ...) или st | other | ... – возвращает новое множество - объединение множеств st и other.
–intersection(other, ...) или st & other & ... – возвращает новое множество -
пересечение множеств st и other.
–difference(other, ...) или st - other - ... – возвращает новое множество - разность множеств st и other.
–isdisjoint(other) – возвращает True если st не содержит общий элементов с other.
–issubset(other) или st <= other – возвращает True если все элементы st содержатся
вother.
–st < other – аналогично st <= other, но множества не должны полностью совпадать.
–issuperset(other) или st >= other –возвращает True если все элементы other
содержатся в st.
–st > other – аналогично st >= other, но множества не должны полностью совпадать.
–update(other, ...) или st |= other | ... – добавляет элементы из other в st.
Примеры работы с множеством:
a = {2, 4, 6, 8, 10}
>>>b = set(range(11))
>>>a
{8, 10, 2, 4, 6}
>>> b
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
>>>
>>>b.remove(0)
>>>b
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
>>>a.add(12)
>>>a
{2, 4, 6, 8, 10, 12}
>>> a & b
{8, 2, 10, 4, 6}
>>> a | b
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12}
>>> a - b {12}
>>> b - a
{1, 9, 3, 5, 7}
1.3 Отображения
Отображение – это неупорядоченная коллекция пар элементов «ключ-значение». В разных языках синонимом отображений являются термины словарь, хеш-таблица или ассоциативный массив.
Отображения в Python представлены единственным типом dict (словарь), в котором в качестве ключа может выступать любой хешируемый объект, а в качестве значения - произвольный объект.
Примеры создания отображения:
# 1. Пустой словарь создается с помощью {} или функции dict()
>>> {} {}
>>> dict() {}
# 2. Инициализировать словарь элементами, используя:
# - фигурные скобки с перечислением элементов в виде 'ключ: значение';
# - функцию dict(), передав набор пар 'ключ: значение'.
# Следует обратить внимание, что т.к. множество - неупорядоченный набор данных,
# при выводе порядок его элементов может быть произвольным.
>>> {"one": 1, "two": 2, "three": 3} {'two': 2, 'one': 1, 'three': 3}
>>> dict(one=1, two=2, three=3) {'two': 2, 'one': 1, 'three': 3}
Пусть d – словарь, на котором вызывается метод:
d[key] – возвращает значение словаря для ключа key. Если ключ не существует, возникает ошибка.
get(key[, default]) – возвращает значение словаря для ключа key. Если ключ не существует возвращается значение default или None.
d[key] = value – устанавливает значение словаря по ключу key. Если ключ не существует, он создается.
items() – возвращает набор пар «ключ-значение» для словаря d. keys() – возвращает набор ключей для словаря d.
values() – возвращает набор значений для словаря d. clear() – удаляет из словаря все элементы.
del d[key] – удаляет пару «ключ-значение» на основании ключа key.
Примеры работы со словарем:
phonebook = {"Петров Петр": "+79102222222"}
>>>phonebook["Иванов Сергей"] = "+79101111111"
>>>phonebook
{'Иванов Сергей': '+79101111111', 'Петров Петр': '+79102222222'}
>>> phonebook["Петров Петр"]
'+79102222222'
# Обновили номер телефона
>>>phonebook["Петров Петр"] = "+79103333333"
>>>phonebook
{'Иванов Сергей': '+79101111111', 'Петров Петр': '+79103333333'}
>>>"Васильев Василий" in phonebook False
>>>phonebook.get("Васильев Василий", "Номер не найден") 'Номер не найден'
>>>phonebook.keys()
dict_keys(['Иванов Сергей', 'Петров Петр'])
>>> phonebook.values() dict_values(['+79101111111', '+79103333333'])
2 Взаимное преобразование типов
#1. Преобразование в строку
#Строковое представление имеют практически все рассмотренные классы
>>> str(True) 'True'
>>>str(5)
'5'
>>>str(10.43)
'10.43'
>>>str([1, 2, 3, 4, 5]) '[1, 2, 3, 4, 5]'
# 2. Преобразование в целое число
>>>int(10.43) # int отсекает дробную часть
10
>>>int("5")
5
>>> int(True) 1
# 3. Преобразование в вещественное число
>>>float(5)
5.0
>>>float("10.43")
10.43
# 4. Преобразование в логический тип
#Всегда возвращает False, для:
#- None, False;
#- нулевых чисел;
#- пустых последовательностей и отображений.
#- ...
>>>bool(None), bool(0), bool(0.0), bool(""), bool({}) (False, False, False, False, False)
>>>bool(5), bool({1: "первый"})
(True, True)
# 5. Преобразования последовательностей
>>>tuple([1, 2, 3]) (1, 2, 3)
>>>d = dict(one=1, two=2, three=2)
>>>list(d.keys()) # Получаем список ключей
['one', 'three', 'two']
>>>set(d.values()) # И множество зн
{1, 2}
3 Поверхностное и глубокое копирование
Оператор присваивания копирует ссылку на объект, создавая т.н. поверхностную копию. В ряде случае необходимо создать полную копию объекта (глубокую копию), например, для мутирующих коллекций, чтобы после изменять новую коллекцию без изменения оригинала.
# 1. Поверхностная и глубокая копии
>>>x = [53, 68, ["А", "В", "С"]]
>>>x1 = x # Поверхностная копия (через присваивание)
>>>x2 = x[:] # Глубокая копия (создается при срезе)
>>>x3 = x.copy() # Глубокая копия (через метод copy())
>>>id(x), id(x1), id(x2), id(x3)
(4813768, 4813768, 4813848, 4813808)
>>> x1 is x, x2 is x, x3 is x (True, False, False)
# 2. Присваивание копирует ссылки на объекты, создавая объекты при необходимости
# Проверить можно с помощью функции id()
>>> a = 5
>>> b = a
>>> a, b (5, 5)
>>>id(a), id(b) (1431495600, 1431495600)
>>>c = 5
>>>id(a), id(c) (1431495600, 1431495600)
#При изменении значения 'a', Python не изменяет объект 5
#(оставляя его "как есть", т.к. знает, что он используется другими),
#а создает новый, меняя ссылку у 'a', при этом прочие объекты продолжают ссылаться на 5
>>> a = 10
>>> id(a), id(c) (1431495680, 1431495600)
#Но с мутирующими типами (например, списком) Python поступает по-другому
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> c = a
>>> id(a), id(b), id(c) (30431712, 30447736, 30431712)
#При изменении мутирующего типа "изменяются" и указывающие на него объекты
#т.к. они хранят ссылку на тот же объект!
>>>a[0] = 5
>>>a, b, c
([5, 2, 3], [1, 2, 3], [5, 2, 3])
4 Константы
В Python не существует привычного для, например, Си или Паскаля понятия константы. Вместо этого, значение, которое подразумевается как константа, обозначается заглавными буквами (MEMORY_MAX = 1024), визуально предупреждая, что данное значение менять не следует.
5 Сортировка
Функция sorted() позволяет получить отсортированный объект в виде списка.
#1. Простой список
>>> lst = [1, 8, 2, 5, 0, 3]
>>> sorted(lst) [0, 1, 2, 3, 5, 8]
>>> sorted(lst, reverse=True) [8, 5, 3, 2, 1, 0]
#2. Словарь
#Для словаря sorted() возвращает отсортированный список ключей
>>> phones = {'Иван': '+74951111111', 'Сергей': '+74951111113', 'Кирилл': '+74951111112'}
>>> sorted(phones) ['Иван', 'Кирилл', 'Сергей']
Задания
Задание 1
Для заданных значений электрических величин выполнить расчет по указанной формуле. Создать строки с формулой, исходными значениями и результатом. Объединить все строки в отчет.
Варианты:
1.Дано: U = 12 В, R = 100 Ом. Закон Ома: I = U / R. Найти: I.
2.Дано: U = 24 В, R = 50 Ом. Мощность: P = U² / R. Найти: P.
3.Дано: R1 = 100 Ом, R2 = 200 Ом. Сопротивление параллельных резисторов: 1/R
=1/R1 + 1/R2. Найти: R.
4.Дано: C = 100 мкФ, U = 12 В. Энергия конденсатора: W = C × U² / 2. Найти: W.
5.Дано: I = 2 А, R = 10 Ом, t = 60 с. Закон Джоуля-Ленца: Q = I² × R × t. Найти: Q.
6.Дано: f = 50 Гц, C = 10 мкФ. Емкостное сопротивление: Xc = 1 / (2 × π × f × C).
Найти: Xc.
7.Дано: f = 1000 Гц, L = 10 мГн. Индуктивное сопротивление: XL = 2 × π × f × L. Найти: XL.
8.Дано: U1 = 220 В, U2 = 12 В. Коэффициент трансформации: k = U1 / U2. Найти:
k.
9.Дано: Pполезная = 80 Вт, Pполная = 100 Вт. КПД источника: η = Pполезная / Pполная × 100%. Найти: η.
10.Дано: C = 470 мкФ, U = 5 В. Заряд конденсатора: Q = C × U. Найти: Q.
11.Дано: T = 0.01 с. Частота колебаний: f = 1 / T. Найти: f.
12.Дано: f = 100 МГц, c = 3×10 м/с. Длина волны: λ = c / f. Найти: λ.
13.Дано: I = 5 А, S = 2.5 мм². Плотность тока: J = I / S. Найти: J.
14.Дано: B = 0.5 Тл, S = 0.01 м². Магнитный поток: Φ = B × S. Найти: Φ.
15.Дано: B = 0.1 Тл, l = 0.5 м, v = 10 м/с. ЭДС индукции: E = B × l × v. Найти: E.
16.Дано: U = 380 В, I = 10 А, cosφ = 0.8. Мощность трехфазной цепи: P = √3 × U × I × cosφ. Найти: P.
17.Дано: ρ = 0.017 Ом×мм²/м, l = 100 м, S = 1.5 мм². Сопротивление проводника: R
=ρ × l / S. Найти: R.
18.Дано: L = 100 мкГн, C = 100 нФ. Резонансная частота: f = 1 / (2 × π × √(L × C)).
Найти: f.
19.Дано: I = 5 А, R = 0.5 Ом. Потери в линии: ΔP = I² × R. Найти: ΔP.
20.Дано: U = 1000 В, d = 0.01 м. Напряженность поля: E = U / d. Найти: E.
21.Дано: B = 0.2 Тл, I = 5 А, l = 0.3 м. Сила Ампера: F = B × I × l. Найти: F.
22.Дано: L = 0.1 Гн, I = 2 А. Энергия магнитного поля: W = L × I² / 2. Найти: W.
23.Дано: n1 = 1500 об/мин, n2 = 1450 об/мин. Скольжение асинхронного двигателя: s = (n1 - n2) / n1 × 100%. Найти: s.
24.Дано: P = 800 Вт, S = 1000 ВА. Коэффициент мощности: cosφ = P / S. Найти: cosφ.
25.Дано: U = 220 В, I = 0.5 А. Тепловая мощность: P = U × I. Найти: P.
26.Дано: R0 = 100 Ом, α = 0.004 1/°C, ΔT = 50°C. Сопротивление терморезистора: R
=R0 × (1 + α × ΔT). Найти: R.
27.Дано: ε = 1, ε0 = 8.85×10 ¹² Ф/м, S = 0.1 м², d = 0.001 м. Емкость плоского конденсатора: C = ε × ε0 × S / d. Найти: C.
28.Дано: μ = 1, μ0 = 4π×10 Гн/м, N = 100, S = 0.001 м², l = 0.1 м. Индуктивность катушки: L = μ × μ0 × N² × S / l. Найти: L.
29.Дано: U = 0.7 В, I = 0.1 А. Сопротивление диода в прямом направлении: R = U / I. Найти: R.
30. Дано: k = 1.38×10 ²³ Дж/К, T = 300 К, B = 1 МГц. Мощность шума: P = k × T × B.
Найти: P.
Задание 2
Для заданного списка значений выполнить расчеты. Создать список результатов. Найти максимальное, минимальное и среднее значения.
Варианты:
1.Напряжения: [5, 10, 15, 20, 25] В, R = 100 Ом. Найти токи для каждого напряжения.
2.Длины провода: [1, 2, 3, 4, 5] м, ρ = 0.0175 Ом×мм²/м, S = 1 мм². Найти сопротивления.
3.Емкости конденсаторов: [100, 200, 300, 400, 500] мкФ, U = 12 В. Найти запасаемую энергию.
4.Токи: [0.1, 0.2, 0.3, 0.4, 0.5] А, R = 50 Ом. Найти мощности на резисторе.
5.Частоты: [50, 100, 150, 200, 250] Гц, L = 0.1 Гн. Найти индуктивные сопротивления.
6.Сопротивления: [10, 20, 30, 40, 50] Ом, U = 24 В. Найти токи.
7.Индуктивности: [10, 20, 30, 40, 50] мГн, f = 1000 Гц. Найти реактивные сопротивления.
8.Напряжения: [3, 6, 9, 12, 15] В, I = 0.5 А. Найти мощности.
9.Времена: [1, 2, 3, 4, 5] с, I = 2 А, U = 12 В. Найти выделенную теплоту.
10.Площади сечения: [0.5, 1.0, 1.5, 2.0, 2.5] мм², l = 100 м, ρ = 0.0175. Найти сопротивления.
11.Магнитные индукции: [0.1, 0.2, 0.3, 0.4, 0.5] Тл, S = 0.01 м². Найти магнитные
потоки.
12.Силы тока: [1, 2, 3, 4, 5] А, B = 0.2 Тл, l = 0.5 м. Найти силы Ампера.
13.Скорости: [5, 10, 15, 20, 25] м/с, B = 0.1 Тл, l = 1 м. Найти ЭДС индукции.
14.Температуры: [0, 20, 40, 60, 80] °C, R0 = 100 Ом, α = 0.004. Найти сопротивления терморезистора.
15.Количество витков: [50, 100, 150, 200, 250], S = 0.001 м², l = 0.1 м. Найти индуктивности.
16.Расстояния между пластинами: [1, 2, 3, 4, 5] мм, S = 0.1 м². Найти емкости конденсатора.
17.Частоты генерации: [1, 2, 3, 4, 5] МГц, C = 100 пФ. Найти индуктивности
контура.
18.Сопротивления нагрузки: [10, 20, 30, 40, 50] Ом, I = 1 А. Найти падения напряжения.
19.Емкости: [10, 20, 30, 40, 50] нФ, f = 1 МГц. Найти емкостные сопротивления.
20.Индуктивности: [100, 200, 300, 400, 500] мкГн, f = 500 кГц. Найти реактивные сопротивления.
21.Напряжения питания: [3, 5, 9, 12, 15] В, I = 0.1 А. Найти потребляемые мощности.
22.Сопротивления резисторов: [100, 200, 300, 400, 500] Ом, U = 10 В. Найти токи.
23.Длины волн: [10, 20, 30, 40, 50] м, c = 3×10 м/с. Найти частоты.
24.Периоды: [0.001, 0.002, 0.003, 0.004, 0.005] с. Найти частоты.
25.Коэффициенты трансформации: [1, 2, 5, 10, 20], U1 = 220 В. Найти U2.
26.Скольжения: [0.01, 0.02, 0.03, 0.04, 0.05], n1 = 1500 об/мин. Найти n2.
27.Удельные сопротивления: [0.017, 0.028, 0.1, 0.4, 1.0] Ом×мм²/м, l = 10 м, S = 1
мм². Найти сопротивления.
28.Диэлектрические проницаемости: [1, 2, 4, 6, 8], S = 0.01 м², d = 1 мм. Найти
емкости.
29.Магнитные проницаемости: [1, 100, 500, 1000, 5000], N = 100, S = 0.001 м², l =
0.1м. Найти индуктивности.
30.Температурные коэффициенты: [0.003, 0.004, 0.005, 0.006, 0.007] 1/°C, R0 = 100
Ом, ΔT = 50°C. Найти сопротивления.
Задание 3
Создать кортежи с параметрами электронных компонентов. Извлечь отдельные параметры. Выполнить расчеты на основе этих параметров.
Варианты:
1.Резисторы: (номинал, допуск, мощность) (100, 5, 0.25), (1000, 1, 0.5), (10000, 10, 1)
Найти диапазоны сопротивлений
2.Конденсаторы: (емкость, напряжение, тип)
(100, 50, 'керамика'), (1000, 25, 'электролит'), (10, 100, 'пленка')
Найти общую емкость при параллельном соединении первых двух
3.Транзисторы: (тип, hFE, Uce_max, Ic_max) ('BC547', 200, 45, 0.1), ('2N2222', 100, 30, 0.8)
Найти максимальную рассеиваемую мощность
4.Диоды: (тип, Uпр, Iпр_max, Uобр) ('1N4007', 0.7, 1, 1000), ('1N4148', 0.6, 0.3, 100)
Найти прямое сопротивление
5.Катушки индуктивности: (индуктивность, ток, сопротивление) (100, 0.5, 0.1), (1000, 0.2, 0.5), (10, 1, 0.01)
Найти запасенную энергию
6.Микросхемы: (тип, напряжение, ток, корпус)
('LM7805', 35, 1, 'TO220'), ('LM317', 40, 1.5, 'TO220')
Найти максимальную рассеиваемую мощность
7.Трансформаторы: (мощность, U1, U2, I2) (50, 220, 12, 4), (100, 220, 24, 4)
Найти КПД трансформатора
8.Реле: (напряжение, ток, сопротивление, контакты) (12, 0.1, 120, '1НО'), (24, 0.05, 480, '1НЗ')
Найти мощность управления
9.Светодиоды: (цвет, Uпр, Iпр, световой поток)
('красный', 1.8, 0.02, 5), ('синий', 3.2, 0.02, 3)
Найти сопротивление ограничительного резистора для U=5В
10.Терморезисторы: (R25, B, P, точность) (1000, 3950, 0.25, 1), (10000, 3450, 0.5, 2)
Найти сопротивление при 50°C
11.Варисторы: (Uраб, Iраб, Umax, диаметр)
(275, 1, 450, 10), (385, 2, 650, 14)
Найти максимальную рассеиваемую энергию
12.Кварцевые резонаторы: (частота, стабильность, нагрузка, корпус) (4, 50, 20, 'HC49'), (8, 30, 18, 'HC49')
Найти период колебаний
13.Оптроны: (Uвх, Iвх, Uвых, Iвых)
(1.2, 0.05, 30, 0.15), (1.5, 0.1, 80, 0.3)
Найти коэффициент передачи
14.Датчики Холла: (чувствительность, Uпит, Iвых, корпус) (50, 5, 20, 'TO92'), (100, 12, 25, 'TO92')
Найти выходное напряжение при B=0.1Тл
15.ЖК-дисплеи: (разрешение, подсветка, Uпит, интерфейс) ('16x2', 'LED', 5, 'parallel'), ('20x4', 'EL', 12, 'I2C')
Найти потребляемую мощность
16.Аккумуляторы: (емкость, напряжение, ток, тип)
(1000, 3.7, 2, 'Li-ion'), (2000, 1.2, 5, 'NiMH')
Найти запасенную энергию
17.Солнечные панели: (мощность, Uxx, Iкз, размер) (10, 21, 0.6, '100x100'), (20, 21, 1.2, '200x100')
Найти КПД при стандартных условиях
18.Двигатели постоянного тока: (мощность, U, I, обороты) (10, 12, 1, 3000), (20, 24, 1, 5000)
Найти КПД двигателя
19.Вентиляторы: (напряжение, ток, воздушный поток, шум) (12, 0.1, 50, 20), (24, 0.08, 80, 25)
Найти потребляемую мощность
20.Микрофоны: (чувствительность, сопротивление, диапазон, тип) (-46, 200, '50-16k', 'электретный'), (-40, 600, '20-20k', 'динамический')
Найти выходное напряжение при заданном звуковом давлении
21.Динамики: (мощность, сопротивление, диапазон, диаметр)
(5, 8, '100-10k', 10), (10, 4, '80-20k', 13)
Найти ток при максимальной мощности
22.Предохранители: (ток, напряжение, скорость, размер) (1, 250, 'быстрый', '5x20'), (5, 250, 'медленный', '6.3x32')
Найти сопротивление предохранителя
23.Переключатели: (ток, напряжение, контакты, тип)
(5, 250, '2P2T', 'поворотный'), (10, 125, 'SPDT', 'тумблер')
Найти мощность коммутации
24. Разъемы: (контакты, ток, напряжение, тип)
(9, 1, 30, 'D-Sub'), (25, 2, 50, 'DB25')
Найти общий ток разъема
25.Платы: (размер, слои, толщина, материал) ('100x100', 2, 1.6, 'FR4'), ('150x100', 4, 1.0, 'FR4')
Найти площадь платы
26.Радиаторы: (размер, Rth, материал, вес) ('30x30', 5, 'алюминий', 10), ('50x50', 2, 'медь', 25)
Найти перегрев при заданной мощности
27.Фильтры: (частота, затухание, полоса, тип) (1000, 40, 100, 'ФНЧ'), (5000, 60, 500, 'ФВЧ')
Найти крутизну среза
28.Усилители: (усиление, полоса, Uпит, шум) (100, '1M', 15, 10), (1000, '100k', 12, 5)
Найти выходное напряжение при заданном входном
29.Генераторы: (частота, стабильность, Uпит, форма) (1, 100, 5, 'синус'), (10, 50, 12, 'меандр')
Найти период колебаний
30.Стабилизаторы: (Uвх_min, Uвх_max, Uвых, Iвых) (7, 35, 5, 1), (4, 40, 12, 1.5)
Найти минимальную разность напряжений
Задание 4
Создать словарь с параметрами электронных компонентов. Извлечь значения по ключам. Выполнить операции со словарем.
Варианты:
1.Резисторы:
resistors = {
'R1': {'value': 100, 'tolerance': 5, 'power': 0.25}, 'R2': {'value': 1000, 'tolerance': 1, 'power': 0.5}, 'R3': {'value': 10000, 'tolerance': 10, 'power': 1}
}
Найти: параметры R2, список всех резисторов, номиналы
2.Конденсаторы:
capacitors = {
'C1': {'capacity': 100, 'voltage': 50, 'type': 'керамика'}, 'C2': {'capacity': 1000, 'voltage': 25, 'type': 'электролит'}, 'C3': {'capacity': 10, 'voltage': 100, 'type': 'пленка'}
}
Найти: емкость C1, тип C2, максимальное напряжение
