diff --git a/TEMA4/Ris1.png b/TEMA4/Ris1.png new file mode 100644 index 0000000..cf8c016 Binary files /dev/null and b/TEMA4/Ris1.png differ diff --git a/TEMA4/Ris2.png b/TEMA4/Ris2.png new file mode 100644 index 0000000..43b383f Binary files /dev/null and b/TEMA4/Ris2.png differ diff --git a/TEMA4/Ris3.png b/TEMA4/Ris3.png new file mode 100644 index 0000000..65b07e6 Binary files /dev/null and b/TEMA4/Ris3.png differ diff --git a/TEMA4/Ris4.png b/TEMA4/Ris4.png new file mode 100644 index 0000000..8b1201b Binary files /dev/null and b/TEMA4/Ris4.png differ diff --git a/TEMA4/report4.md b/TEMA4/report4.md new file mode 100644 index 0000000..f14926c --- /dev/null +++ b/TEMA4/report4.md @@ -0,0 +1,385 @@ +# Отчёт по Теме 3 +Таболин Иван А-01-23 +## 1. Запуск IDLE и начальная настройка +Запустил и настроил оболочку IDLE, создал файл отчёта и оформил его оглавление. Сохранил файл отчёта. +```py +import os +os.chdir('C:\\Users\\User\\Desktop\\python-labs\\TEMA4') +``` +## 2. Стандартные функции +Стандартные функции находятся в модуле `builtins`, доступном без импорта при запуске среды. +## 2.1. Функция round +Функция `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`, если не указать количество значений после запятой, результат будет целым числом, в остальных случаях - вещественное число. +```py +round(123.456,1) +123.5 +round(123.456,0) +123.0 +round(123.456,2) +123.46 +type(round(123.456,1)) + +type(round(123.456)) + +``` +## 2.2. Функция range +Функция `range` создает последовательность целых чисел с заданным шагом или, по умолчанию, с шагом 1. +```py +gg=range(76,123,9);gg +range(76, 123, 9) +``` +Правая граница не входит в последовательность. +Эта функция создает итерируемый объект. Чтобы увидеть полученную последовательность чисел, его надо преобразовать, например, в список. +```py +list(gg) +[76, 85, 94, 103, 112, 121] +type(gg);type(list(gg)) + + +``` +Функция `range` с одним аргументом создает последовательность от 0 до указанного числа с шагом 1. +```py +gg1=range(12);gg1 +range(0, 12) +list(gg1) +[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] +``` +## 2.3. Функция zip +Функция `zip` создает общий объект, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей. +```py +qq=['Tabolin','Berezhkov','Krishtul','Stepanischev'];qq +['Tabolin', 'Berezhkov', 'Krishtul', 'Stepanischev'] +ff=zip(gg,qq);ff + +tuple(ff) +((76, 'Tabolin'), (85, 'Berezhkov'), (94, 'Krishtul'), (103, 'Stepanischev')) +``` +Чтобы просмотреть содержимое результата функции `zip`, преобразуем его в кортеж. +В полученном кортеже количество элементов определяется меньшим из размеров аргументов функции `zip`. + ```py +ff[1,1] +Traceback (most recent call last): + File "", line 1, in + ff[1,1] +TypeError: 'zip' object is not subscriptable +``` +Невозможно обратиться с указанием индекса, потому что объект является итерируемым. +## 2.4. Функция eval +Функция `eval` выполняет вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки. +```py +fff=float(input('коэффициент усиления='));dan=eval('5*fff-156');dan +коэффициент усиления=33 +9.0 +``` +## 2.5. Функция exec +Функция `exec` - чтение и выполнение объекта-аргумента функции. Этот объект должен представлять собой строку символов с совокупностью инструкций на языке Python. +```py +exec(input('введите инструкции:')) +введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3) +gg +221.456 +``` +## 2.6. Самостоятельно изучение некоторых функций +`abs` - взятие модуля числа +`pow(b, e)` - возведение числа `b` в степень `e` +`max(min)` - нахождение максимального (минимального) числа +`sum` - сложение чисел +`divmod(a,b)` - возвращает результат целочисленного деления и остаток от деления числа `a` на `b` +`len` - возвращает длину аргумента +`map` - выполняет заданную функцию с заданными значениями +```py +abs(-5.6) +5.6 +pow(2,3) +8 +max(1,2,3,90) +90 +min(-4,4,67) +-4 +sum([1,0.5,0.25,0.125,0.0625]) +1.9375 +divmod(5,2) +(2, 1) +len({1,2,3,5}) +4 +list(map(lambda x: pow(x,2), [1,2,3,4,5,6,7,8,9,10])) +[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] +``` +## 3. Функции модуля math +Загрузил модуль `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'] +``` +Изучил функцию расчета факториала и попробовал использовать её +```py +help(math.factorial) +Help on built-in function factorial in module math: + +factorial(n, /) + Find n!. + + Raise a ValueError if x is negative or non-integral. + +math.factorial(5) +120 +``` +Изучил некоторые другие функции модуля: +`sin` - синус аргумента (в радианах) +`acos` - арккосинус аргумента (в радианах) +`degrees` и `radians` - перевод из радиан в градусы и наоборот +`exp` - возведение экспоненты в степень +`log(a,b)` - логарифм `a` по основанию `b` (по умолчанию `b = e`) +`log10` - десятичный логарифм +`sqrt` - квадратный корень +`ceil` и `floor` - округление "вверх" и "вниз" +`pi` - число Пи +```py +math.sin(math.pi/2) +1.0 +math.acos(1) +0.0 +math.acos(0) +1.5707963267948966 +math.sin(math.asin(0.987765)) +0.987765 +math.degrees(math.pi) +180.0 +math.radians(45) +0.7853981633974483 +math.exp(math.log(5)) +4.999999999999999 +math.log(25,5) +2.0 +math.log10(1000) +3.0 +math.sqrt(144) +12.0 +math.ceil(1.1) +2 +math.floor(5.9) +5 +math.pi +3.141592653589793 +``` +```py +math.sin(2*math.pi/7+math.exp(0.23)) +0.8334902641414562 +``` +## 4. Функции модуля cmath +Это совокупность функций для работы с комплексными числами +Загрузил модуль `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'] +``` +Функции взятия корня и расчета фазы комплексного числа +```py +cmath.sqrt(1.2-0.5j) +(1.118033988749895-0.22360679774997896j) +cmath.phase(1-0.5j) +-0.4636476090008061 +``` +## 5. Модуль random +Это совокупность функций для выполнения операций с псевдослучайными числами и выборками. +Загрузил модуль `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'] +``` +Изучил функцию `random.seed`. Она задает случайное начальное состояние для псевдослучайных чисел. +```py +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. + +random.seed() +``` +Изучил некоторые другие функции модуля: +`random` - равномерно распределенное случайное вещественное число от 0 до 1 +`uniform` - равномено распределенное вещественное число из промежутка +`randint` - целое число из промежутка +`gauss` - случайное число с указанием среднего и стандартного отклонения +`choice` - выбирает случайный элемент +`shuffle` - перемешивает список +`sample(spis1,n)` - выбор n случайных элементов из spis1 +`betavariate` - случайное вещественное число из бета-распределения +`gammavariate` - случайное вещественное число из гамма-распределения +```py +random.random() +0.8645955981071833 +random.uniform(1,5) +3.9631799754514985 +random.randint(2,10) +6 +random.gauss(0,1) +-1.4256278812580692 +random.choice([1,2,3,4,5]) +1 +spis1=[0,1,2,3,4,5] +random.shuffle(spis1);spis1 +[1, 5, 0, 2, 3, 4] +random.sample(spis1,3) +[3, 1, 2] +random.betavariate(2,5) +0.49882484510318864 +random.gammavariate(2,1) +2.798582174334477 +``` +Список с 4 случайными значениями, подчиняющимися, соответственно, равномерному, нормальному, бета и гамма – распределениям. +```py +spis_rand=[random.uniform(1,7),random.gauss(0,1),random.betavariate(1,5),random.gammavariate(3,10)] +spis_rand +[3.139339025932303, 0.5820428632300484, 0.3368063251531593, 30.52697334997717] +``` +## 6. Функции модуля time +Функции из модуля `time` предназначены для работы с календарем и со временем. +Загрузил модуль `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'] +``` +Просмотрел время с начала эпохи, а затем определил временной интервал со времени ввода предыдущей инструкции +```py +c1=time.time();c1 +1760307438.705462 +c2=time.time()-c1;c2 +11.940115690231323 +``` +Функция `gmtime` возвращает объект класса `struct_time`, содержащий полную информацию о текущем времени. Обращение к компонентам получившегося объекта. +```py +dat=time.gmtime();dat +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=22, tm_min=19, tm_sec=3, tm_wday=6, tm_yday=285, tm_isdst=0) +dat.tm_mon +10 +``` +Получение "местного" времени +```py +local_time=time.localtime();local_time +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=1, tm_min=22, tm_sec=37, tm_wday=0, tm_yday=286, tm_isdst=0) +``` +`asctime` - преобразование представления времени из кортежа в строку +`ctime` - преобразование времени, прошедшего с начала эпохи, в строку +`sleep` - прерывание работы программы на заданное время +`mktime` - преобазование времени из типа кортежа или struct_time в число секунд с начала эпохи +```py +c1=time.time();c1 +1760309028.8968148 +local_struct=time.localtime(c1);local_struct +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=1, tm_min=43, tm_sec=48, tm_wday=0, tm_yday=286, tm_isdst=0) +time_str1=time.asctime(local_struct);time_str1 +'Mon Oct 13 01:43:48 2025' +time_str2=time.ctime(c1);time_str2 +'Mon Oct 13 01:43:48 2025' +seconds=time.mktime(local_struct);seconds +1760309028.0 +n_struct=time.localtime(seconds);n_struct +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=1, tm_min=43, tm_sec=48, tm_wday=0, tm_yday=286, tm_isdst=0) +``` +## 7. Графические функции +Моудль `pylab`, входящий в состав пакета `matplotlib`, содержит ряд полезных вычислительных функций и графических возможностей. +Импортировал модуль +```py +import pylab +``` +Ошибки не возникло. +Задание списков отсчётов и отображение графика +```py +x=list(range(-3,55,4)) +t=list(range(15)) +pylab.plot(t,x) +[] +pylab.title('Первый график') +Text(0.5, 1.0, 'Первый график') +pylab.xlabel('время') +Text(0.5, 0, 'время') +pylab.ylabel('сигнал') +Text(0, 0.5, 'сигнал') +pylab.show() +``` +`pylab.plot(t,x)' создает график функции `x(t)` в оперативной памяти +`pylab.title()' добавляет подись графика +`pylab.xlabel` и `pylab.ylabel` добавляет подписи к осям +`pylab.show` отображает график на экране +Получившийся график: + +![График](Ris1.png) + +Построение нескольких графиков на одном рисунке +```py +X1=[12,6,8,10,7] +X2=[5,7,9,11,13] +pylab.plot(X1) +pylab.plot(X2) +pylab.show() +``` + +![2 графика](Ris2.png) + +Построение круговой диаграммы +```py +region=['Центр','Урал','Сибирь','Юг'] +naselen=[65,12,23,17] +pylab.pie(naselen,labels=region) +([, , , ], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')]) +pylab.show() +``` +![Круговая диаграмма](Ris2.png) +Функции `hist` и `bar` +```py +pylab.bar(region,naselen) + +pylab.show() +``` + +![Столбиковая диаграмма](Ris3.png) + +```py +data=[2,2,2,2,3,3,4,4,4,4,4,5] +pylab.hist(data) +(array([4., 0., 0., 2., 0., 0., 5., 0., 0., 1.]), array([2. , 2.3, 2.6, 2.9, 3.2, 3.5, 3.8, 4.1, 4.4, 4.7, 5. ]), ) +pylab.show() +``` +![Гистограмма](Ris4.png) + +## 8. Модуль statistics +Применение некоторых функций +```py +statistics.median(data) +3.5 +statistics.mean(data) +3.25 +temperature=[10,12,10,11,9,7,9,10] +air_humidity=[90,91,90,91,89,88,89,90] +statistics.correlation(temperature,air_humidity) +0.9738516810963534 +```