# Отчёт по теме 4 Ефремов Станислав, А-02-23 ## 2. Стандартные функции. Находятся в модуле builtins, который становится доступным без импорта при запуске среды IDLE. ### 2.1. Функция round – округление числа с заданной точностью. ```py round(123.456,1) 123.5 round(123.456,0) 123.0 type(round(123.456,1)) type(round(123.456,0)) type(123.0) type(123.5) round(123.456) 123 type(123) type(round) ``` ### 2.2. Функция range – создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1. ```py gg=range(76,123,9) #генерирует числа, начиная с 76 и прибавляя 9, пока не достигнет числа, которое больше или равно 123 (правая граница включена не будет) type(gg) list(gg) #чтоб его увидеть, необходимо преобразовать в другой тип [76, 85, 94, 103, 112, 121] range(23) #функция создаст последовательность чисел от 0 до 22 включительно с шагом 1 range(0, 23) ``` ### 2.3. Функция zip – создание общего объекта, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей. Длина результирующего объекта равна длине самого короткого объекта из двух аргументов функции. ```py qq=["Ефремов", "Добровольска", "Снегура", "Туровец"] list(gg) [76, 85, 94, 103, 112, 121] ff=zip(gg,qq) #образуется итерируемый объект, просмотреть без преобразования типа не получится ff type(ff) #количество элементов-кортежей в объекте определяется размерностью меньшего объекта tuple(ff) ((76, 'Ефремов'), (85, 'Добровольска'), (94, 'Снегура'), (103, 'Туровец')) ff[1] #объект ff, возвращаемый функцией zip, является итератором. У итераторов нет метода __getitem__, который позволяет обращаться к элементам по индексу. Попытка сделать это вызовет ошибку TypeError. Traceback (most recent call last): File "", line 1, in 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 ``` ```py len('Длина строки') 12 ``` ```py max(2,3,4) 4 ``` ```py min(2,3,4) 2 ``` ```py pow(2,3) 8 ``` ```py >>> 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) #наименьшее целое число, большее или равное 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 – совокупность функций для выполнения операций с псевдослучайными числами и выборками. ### 5.1. ```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. # Установка начального значения для воспроизводимости random.seed(42) # Фиксируем seed для одинаковых результатов #random() - равномерное распределение [0, 1) random.random() 0.6394267984578837 # uniform(a, b) - равномерное распределение [a, b] random.uniform(5, 15) 5.25010755222667 # randint(a, b) - случайное целое [a, b] random.randint(1, 100) 36 # gauss(mu, sigma) - нормальное распределение random.gauss(0, 1) # центр распределения;стандартное отклонение 0.017593105583573694 # choice(sequence) - случайный выбор a=[1,2,3,4,5,6,7] random.choice(a) 1 # shuffle(sequence) - перемешивание random.shuffle(a) a [4, 2, 3, 1, 5, 7, 6] # sample(population, k) - выборка без повторений random.sample(range(100), 5) [4, 3, 11, 27, 29] # betavariate(alpha, beta) - бета-распределение random.betavariate(2, 5) #где альфа и бета - параметры формы 0.3918844780644009 # gammavariate(alpha, beta) - гамма-распределение random.gammavariate(2, 1) 2.219353519271194 ``` ### 5.2. Создание списка с 4 случайными значениями ```py random_values = [ random.uniform(0, 10), #равномерное распределение [0, 10) random.gauss(50, 10), #нормальное распределение (м.о.=50, с.о.=10) random.betavariate(2, 5), #бета-распределение (alpha=2, beta=5) random.gammavariate(3, 2) #гамма-распределение (alpha=3, beta=2) ] random_values [5.892656838759088, 55.47961646339978, 0.5314696353281997, 2.163791803055314] nazvania = [ "равномерное [0, 10)", "nормальное (mu=50, SIGMA=10)", "бета (alpha=2, beta=5)", "гамма (alpha=3, beta=2)" ] list(zip(random_values, nazvania)) [(5.52040631273227, 'равномерное [0, 10)'), (48.36023998393615, 'nормальное (mu=50, SIGMA=10)'), (0.3513506341781665, 'бета (alpha=2, beta=5)'), (3.4766245452081708, 'гамма (alpha=3, beta=2)')] ``` ## 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 1760885547.2719448 c2=time.time()-c1 #временной интервал в секундах, со времени ввода предыдущей инструкции c2 41.91496253013611 dat=time.gmtime() #вывод полной информацию о текущем времени. Функция возвращает (UTC). Московское время MSK опережает UTC на 3 часа dat time.struct_time(tm_year=2025, tm_mon=10, tm_mday=19, tm_hour=14, tm_min=54, tm_sec=29, tm_wday=6, tm_yday=292, tm_isdst=0) dat.tm_mon 10 dat.tm_year 2025 dat.tm_mday 19 dat.tm_hour 14 dat.tm_min 55 dat.tm_sec 30 dat.tm_wday #День недели - четверг (дни недели: 0=понедельник, 1=вторник, 2=среда, 3=четверг, 4=пятница, 5=суббота, 6=воскресенье) 6 dat.tm_yday #День года - 292-й день в году (считая с 1 января = 1) 292 dat.tm_isdst #Летнее время - не действует (0 = зимнее время, 1 = летнее время, -1 = неизвестно) 0 ``` ```py time.localtime() #Получение местного времени time.struct_time(tm_year=2025, tm_mon=10, tm_mday=19, tm_hour=17, tm_min=58, tm_sec=49, tm_wday=6, tm_yday=292, tm_isdst=0) time.asctime() #Получение текущего времени, представление времени из кортежа в строку 'Sun Oct 19 17:59:18 2025' time.ctime() #Преобразование времени в секундах, прошедшего с начала эпохи, в строку 'Sun Oct 19 17:59:35 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) #Создание графика в оперативной памяти [] pylab.title('Первый график') Text(0.5, 1.0, 'Первый график') pylab.xlabel('время') Text(0.5, 0, 'время') pylab.ylabel('сигнал') Text(0, 0.5, 'сигнал') pylab.show() #Отображение графика на экране ``` ![alt text](./screenshots/{58781A87-6633-474F-A77A-BE36643822E4}.png) ```py X1=[12,6,8,10,7] X2=[5,7,9,11,13] pylab.plot(X1) [] pylab.plot(X2) [] pylab.show() ``` ![alt text](./screenshots/{32B82522-D8D5-43AA-9C7F-4991CE02A603}.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() ``` ![alt text](./screenshots/1.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.]), ) 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() ``` ![alt text](./screenshots/{A5B2DC00-DB40-42EF-B410-DAA0781F2422}.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) 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() ``` ![alt text](./screenshots/{7D368B80-7126-4808-B3BC-84E476BAECC5}.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.