Этот коммит содержится в:
2026-03-01 19:42:30 +03:00
родитель 235f2e5db3
Коммит 539b034fdf
12 изменённых файлов: 498 добавлений и 0 удалений

368
TEMA4/Tema4_report.md Обычный файл
Просмотреть файл

@@ -0,0 +1,368 @@
# Отчет по теме 4
Филиппова Евгения, А-01-23
## 2. Стандартные функции. Находятся в модуле builtins, который становится доступным без импорта при запуске среды IDLE.
2.1. Функция round – округление числа с заданной точностью.
```py
help(round)
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
round(123.456,1)
123.5
type(round(123.456,1))
<class 'float'>
round(123.456,0)
123.0
type(round(123.456,0))
<class 'float'>
round(123.456)
123
type(123)
<class 'int'>2
```
2.2. Функция range – создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1.
```py
gg=range(76,123,9) #генерирует числа, начиная с 76 и прибавляя 9, пока не достигнет числа, которое больше или равно 123 (правая граница включена не будет)
type(gg)
<class 'range'>
list(gg) #чтоб его увидеть, необходимо преобразовать в другой тип
[76, 85, 94, 103, 112, 121]
range(23) #функция создаст последовательность чисел от 0 до 22 включительно с шагом 1
range(0, 23)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
```
2.3.
Функция zip – создание общего объекта, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей. Длина результирующего объекта равна длине самого короткого объекта из двух аргументов функции.
```py
qq=["Филиппова", "Анисенков", "Лазарев", "Подольский"]
ff=zip(gg,qq) #образуется итерируемый объект, просмотреть без преобразования типа не получится
ff
<zip object at 0x00000203B0C7EF40>
type(ff) #количество элементов-кортежей в объекте определяется размерностью меньшего объекта
<class 'zip'>
tuple(ff)
((76, 'Филиппова'), (85, 'Анисенков'), (94, 'Лазарев'), (103, 'Подольский'))
ff[1] #объект ff, возвращаемый функцией zip, является итератором. У итераторов нет метода __getitem__, который позволяет обращаться к элементам по индексу. Попытка сделать это вызовет ошибку TypeError.
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
ff[1]
TypeError: 'zip' object is not subscriptable
c= list(zip(gg, qq)) #для обращения по индексу можно преобразовать в другой тип
c[0]
(76, 'Филиппова')
```
2.4. Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки.
```py
fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=4
dan
-136.0
```
2.5. Функция exec – чтение и выполнение объекта-аргумента функции. Этот объект должен представлять собой строку символов с совокупностью инструкций на языке Python.
```py
exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
gg
221.456
```
2.6.
Самостоятельно изучите и попробуйте применить функции abs, pow, max, min, sum, divmod, len, map.
```py
abs(-5) #модуль
5
len('Длина строки')
12
max(2,3,4)
4
min(2,3,4)
2
pow(2,3) #степень
8
a=(5,10,7)
sum(a)
22
list(map(lambda x: x*2, [1, 2, 3, 4])) #позволяет применить заданную функцию к каждому элементу итерируемого объекта
[2, 4, 6, 8]
divmod(7, 2) #возвращает результат целочисленного деления и остаток от деления в виде кортежа
(3, 1)
```
## 3. Функции из стандартного модуля math – совокупность разнообразных математических функций.
```py
import math
dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fma', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
help(math.factorial)
Help on built-in function factorial in module math:
factorial(n, /)
Find n!.
math.factorial(5)
120
math.sin(1.57) #из радиан в значение синуса
0.9999996829318346
math.acos(1) #из значения косинуса в радианы
0.0
math.degrees(1) #из радиан в градусы
57.29577951308232
math.exp(2) #e в степени 2
7.38905609893065
math.log(10) #натуральный логарифм по основанию e
2.302585092994046
math.log(8, 2) #логарифм 8 по основанию 2
3.0
math.log10(10) #логарифм 10 по основанию 10
1.0
math.sqrt(4)
2.0
math.ceil(2.3) #округление вверх
3
math.ceil(-2.3)
-2
math.floor(2.3) #округление вниз
2
math.floor(-2.3)
-3
math.pi
3.141592653589793
math.sin((2*math.pi/7)+math.exp(0.23))
0.8334902641414562
```
4. Функции из модуля cmath – совокупность функций для работы с комплексными числами.
```py
import cmath
dir(cmath)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
cmath.sqrt(1.2-0.5j) #квадратный корень из комплексного числа
(1.118033988749895-0.22360679774997896j)
cmath.phase(1-0.5j) #расчета фазы
-0.4636476090008061
```
## 5. Стандартный модуль random – совокупность функций для выполнения операций с псевдослучайными числами и выборками.
```py
import random
dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_fabs', '_floor', '_index', '_inst', '_isfinite', '_lgamma', '_log', '_log2', '_os', '_parse_args', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', 'betavariate', 'binomialvariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'main', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
help(random.seed)
Help on method seed in module random:
seed(a=None, version=2) method of random.Random instance
Initialize internal state from a seed.
The only supported seed types are None, int, float,
str, bytes, and bytearray.
None or no argument seeds from current time or from an operating
system specific randomness source if available.
If *a* is an int, all bits are used.
For version 2 (the default), all of the bits are used if *a* is a str,
bytes, or bytearray. For version 1 (provided for reproducing random
sequences from older versions of Python), the algorithm for str and
bytes generates a narrower range of seeds.
# Установка seed для воспроизводимости результатов
random.seed(42)
#равномерное распределение в диапазоне [a, b]
random.uniform(5,10)
5.125053776113335
#случайное целое число в диапазоне [a, b]
random.randint(5,10)
7
num=[1,2,3,4,5]
#перемешивание списка
random.shuffle(num)
print(num)
[4, 3, 1, 5, 2]
#случайный элемент из последовательности
random.choice(num)
2
str=['a', 'b', 'c', 'd', 'e', 'f']
#случайная выборка из k элементов
random.sample(str,3)
['d', 'b', 'f']
#равномерное распределение, возвращает число от 0.0 до 1.0
a=random.random()
random_values.append(a)
#нормальное распределение - gauss(mu, sigma)
b=random.gauss(mu=0, sigma=1)
random_values.append(b)
#бета-распределение - betavariate(alpha, beta)
# alpha > 0, beta > 0
c=random.betavariate(alpha=2, beta=5)
random_values.append(c)
#гамма-распределение - gammavariate(alpha, beta)
# alpha > 0, beta > 0
g=random.gammavariate(alpha=2,beta=1)
random_values.append(g)
print(random_values)
[0.6766994874229113, -0.2673374784971682, 0.33770203607050125, 0.2499045656863944]
```
## 6. Функции из модуля time – работа с календарем и со временем.
```py
import time
dir(time)
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']
c1=time.time() #функция time возвращает время в секундах, прошедшее с начала эпохи, за которое обычно принимается 1.01.1970г.
c1
1761552320.8137634
c2=time.time()-c1 #временной интервал в секундах, со времени ввода предыдущей инструкции
c2
21.83978009223938
dat=time.gmtime() #вывод объектa класса struct_time, полной информации о текущем времени. Функция возвращает (UTC). Московское время MSK опережает UTC на 3 часа
dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=27, tm_hour=8, tm_min=6, tm_sec=16, tm_wday=0, tm_yday=300, tm_isdst=0)
dat.tm_mon
10
dat.tm_year
2025
dat.tm_mday
27
dat.tm_hour
8
dat.tm_min
6
dat.tm_sec
16
dat.tm_wday #День недели - четверг (дни недели: 0=понедельник, 1=вторник, 2=среда, 3=четверг, 4=пятница, 5=суббота, 6=воскресенье)
0
dat.tm_yday #День года - 300-й день в году (считая с 1 января = 1)
300
dat.tm_isdst #Летнее время - не действует (0 = зимнее время, 1 = летнее время, -1 = неизвестно)
0
time.localtime() #Получение местного времени
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=27, tm_hour=11, tm_min=11, tm_sec=37, tm_wday=0, tm_yday=300, tm_isdst=0)
time.asctime() #Получение текущего времени, представление времени из кортежа в строку
time.asctime()
'Mon Oct 27 11:12:15 2025
time.ctime() #Преобразование времени в секундах, прошедшего с начала эпохи, в строку
'Mon Oct 27 11:12:48 2025'
time.sleep(3) #Прерывание работы программы на заданное время(3 секунды)
time_tuple = (2025, 1, 2, 3, 4, 5, 6, 222, 0)
time_obj = time.struct_time(time_tuple)
time_obj
time.struct_time(tm_year=2025, tm_mon=1, tm_mday=2, tm_hour=3, tm_min=4, tm_sec=5, tm_wday=6, tm_yday=222, tm_isdst=0)
seconds = time.mktime(time_obj) #Преобразование времени из типа кортежа или struct_time в число секунд с начала эпохи
seconds
1735776245.0
back_to_time = time.localtime(seconds) #Обратное преобразование
back_to_time
time.struct_time(tm_year=2025, tm_mon=1, tm_mday=2, tm_hour=3, tm_min=4, tm_sec=5, tm_wday=3, tm_yday=2, tm_isdst=0)
```
## 7. Графические функции.
## Построение графиков
```py
import pylab
x=list(range(-3,55,4))
t=list(range(15))
pylab.plot(t,x) #Создание графика в оперативной памяти
[<matplotlib.lines.Line2D object at 0x0000027668162490>]
pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
pylab.xlabel('время')
Text(0.5, 0, 'время')
pylab.ylabel('сигнал')
Text(0, 0.5, 'сигнал')
pylab.show() #Отображение графика на экране
```
![](plo1.png)
```py
X1=[12,6,8,10,7]
X2=[5,7,9,11,13]
pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000027669976C10>]
pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000027669976D50>]
pylab.show()
```
![](ris2.png)
## Построение круговой диаграммы
```py
region=['Центр','Урал','Сибирь','Юг'] #Метки для диаграммы
naselen=[65,12,23,17]] #Значения для диаграммы
pylab.pie(naselen,labels=region) #Создание диаграммы в памяти
([<matplotlib.patches.Wedge object at 0x00000160BCB69BE0>, <matplotlib.patches.Wedge object at 0x00000160BD497390>, <matplotlib.patches.Wedge object at 0x00000160BD497750>, <matplotlib.patches.Wedge object at 0x00000160BD4979D0>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
pylab.show() #Отображение диаграммы
```
![](ris3.png)
## Построение столбчатой диаграммы.
```py
categories = ['A', 'B', 'C', 'D', 'F']
values = [3, 7, 8, 2, 1]
pylab.bar(categories, values, color=['red', 'orange', 'yellow', 'green', 'blue'], alpha=0.7)
<BarContainer object of 5 artists>
pylab.title('Столбчатая диаграмма распределения по категориям')
Text(0.5, 1.0, 'Столбчатая диаграмма распределения по категориям')
pylab.xlabel('Категории')
Text(0.5, 0, 'Категории')
pylab.ylabel('Количество')
Text(0, 0.5, 'Количество')
pylab.grid(axis='y', alpha=0.75)
pylab.show()
```
![](ris4.png)
## Построение гистаграммы
```py
grades = [85, 92, 78, 65, 90, 85, 88, 72, 95, 81, 85, 90, 78, 85, 92]
pylab.hist(grades, bins=5, edgecolor='black', alpha=0.7, color='skyblue')
(array([1., 1., 3., 5., 5.]), array([65., 71., 77., 83., 89., 95.]), <BarContainer object of 5 artists>)
pylab.title('Гистограмма распределения оценок')
Text(0.5, 1.0, 'Гистограмма распределения оценок')
pylab.xlabel('Оценки')
Text(0.5, 0, 'Оценки')
pylab.ylabel('Частота')
Text(0, 0.5, 'Частота')
pylab.grid(axis='y', alpha=0.75)
pylab.show()
```
![](ris5.png)
## 8. Модуль statistics.
```py
# Данные для статистического анализа
data = [23, 45, 67, 34, 89, 56, 72, 41, 58, 64, 39, 51, 47, 62, 55]
import statistics
mean_value = statistics.mean(data) #нахождение среднего
mean_value
53.53333333333333
median_value = statistics.median(data) #нахождение медианы
median_value
55
dat = [1, 1, 1, 2, 3, 4, 5, 6, 7]
mode_value = statistics.mode(dat) #нахождение моды
mode_value
1
```
## 9. Конец сеанса работы c IDLE.

Двоичные данные
TEMA4/plo1.png Обычный файл

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

После

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

Двоичные данные
TEMA4/plot.png Обычный файл

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

После

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

Двоичные данные
TEMA4/plot2.png Обычный файл

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

После

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

Двоичные данные
TEMA4/ris2.png Обычный файл

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

После

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

Двоичные данные
TEMA4/ris3.png Обычный файл

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

После

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

Двоичные данные
TEMA4/ris4.png Обычный файл

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

После

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

Двоичные данные
TEMA4/ris5.png Обычный файл

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

После

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

63
TEMA4/task.md Обычный файл
Просмотреть файл

@@ -0,0 +1,63 @@
# Общее контрольное задание по теме 4
Филиппова Евгения, А-01-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```py
# Комплексное число и операции
import math
import cmath
import time
import random
tup = (lambda x: (x // 3, x % 3))((round(cmath.phase(0.2+0.8j), 2)) * 20)
print(tup)
(8, 2.6000000000000014)
# Текущее московское время
current_time = time.localtime()
time_string = f"{current_time.tm_hour:02d}:{current_time.tm_min:02d}"
print(f"Текущее время (чч:мм): {time_string}")
# Случайная выборка дней недели
dni = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вск']
random_days = random.sample(dni, 3)
print(random_days)
# Случайный выбор числа из последовательности
num = list(range(14, 33, 3))
random_num = random.choice(num)
print(random_num)
# Генерация нормально распределенного числа и списка букв
N = round(random.gauss(15, 4))
N=max(1,N)
print(N)
bukv = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
random_bukv = [random.choice(bukv) for _ in range(N)]
print(random_bukv)
# Временной интервал в минутах
start_time = time.time()
time.sleep(2)
end_time = time.time()
time_interval_minutes = (end_time - start_time) / 60
print(time_interval_minutes)
```

43
TEMA4/task.py Обычный файл
Просмотреть файл

@@ -0,0 +1,43 @@
# Комплексное число и операции
import math
import cmath
import time
import random
tup = (lambda x: (x // 3, x % 3))((round(cmath.phase(0.2+0.8j), 2)) * 20)
print(tup)
(8, 2.6000000000000014)
# Текущее московское время
current_time = time.localtime()
time_string = f"{current_time.tm_hour:02d}:{current_time.tm_min:02d}"
print(f"Текущее время (чч:мм): {time_string}")
# Случайная выборка дней недели
dni = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вск']
random_days = random.sample(dni, 3)
print(random_days)
# Случайный выбор числа из последовательности
num = list(range(14, 33, 3))
random_num = random.choice(num)
print(random_num)
# Генерация нормально распределенного числа и списка букв
N = round(random.gauss(15, 4))
N=max(1,N)
print(N)
bukv = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
random_bukv = [random.choice(bukv) for _ in range(N)]
print(random_bukv)
# Временной интервал в минутах
start_time = time.time()
time.sleep(2)
end_time = time.time()
time_interval_minutes = (end_time - start_time) / 60
print(time_interval_minutes)

24
TEMA4/task10.md Обычный файл
Просмотреть файл

@@ -0,0 +1,24 @@
# Контрольное задание по Теме 4
Филиппова Евгения, А-01-23
## 10) Можно ли при построении графика с помощью функции plot() сначала задать заголовок, разметку осей и т.д. и лишь после этого обратиться к этой функции? В какой момент график появится на экране?
```py
import pylab
pylab.title('Заголовок')
Text(0.5, 1.0, 'Заголовок')
pylab.show()
```
![](tittle.png) - график будет существовать уже на этом этапе.
```py
pylab.xlabel('абсисс')
Text(0.5, 0, 'абсисс')
pylab.ylabel('ординат')
Text(0, 0.5, 'ординат')
x=(2,4,6,8,10)
y=(5,2,8,16,10)
pylab.plot(x,y)
[<matplotlib.lines.Line2D object at 0x000001A5FBAE3D90>]
pylab.show()
```
![](plot2.png)

Двоичные данные
TEMA4/tittle.png Обычный файл

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

После

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