diff --git a/TEMA4/Figure_1.png b/TEMA4/Figure_1.png new file mode 100644 index 0000000..565088d Binary files /dev/null and b/TEMA4/Figure_1.png differ diff --git a/TEMA4/Figure_2.png b/TEMA4/Figure_2.png new file mode 100644 index 0000000..082bd67 Binary files /dev/null and b/TEMA4/Figure_2.png differ diff --git a/TEMA4/Figure_3.png b/TEMA4/Figure_3.png new file mode 100644 index 0000000..69f47d5 Binary files /dev/null and b/TEMA4/Figure_3.png differ diff --git a/TEMA4/Ris2.png b/TEMA4/Ris2.png new file mode 100644 index 0000000..93cebca Binary files /dev/null and b/TEMA4/Ris2.png differ diff --git a/TEMA4/report.md b/TEMA4/report.md new file mode 100644 index 0000000..a27ab41 --- /dev/null +++ b/TEMA4/report.md @@ -0,0 +1,347 @@ +# Отчет по теме 4 +Хатюхин Евгений, А-02-23 + +## 1 Запуск IDLE +## 2 Изучил стандартные встроенные функции +### 2.1 Изучил функции округления +```py +round(123.456,1) +123.5 +a = round(123.456,1) +b = round(123.456, 0) +a +123.5 +b +123.0 +type(a);type(b) + + +round(123.456) +123 +c = round(123.456) +type(c) + +``` +### 2.2 Изучил функцию создания последовательности +```py +gg=range(76,123,9) +gg +range(76, 123, 9) +list(gg) +[76, 85, 94, 103, 112, 121] +range(23) +range(0, 23) +list(range(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 = ['Khatiukhin','Shabatov','Efremov','Turovec'] +qq +['Khatiukhin', 'Shabatov', 'Efremov', 'Turovec'] +ff = zip(gg,qq) +ff + +tuple(ff) +((76, 'Khatiukhin'), (85, 'Shabatov'), (94, 'Efremov'), (103, 'Turovec')) #В итоге получилась последовательность из 4 элементов, так как в qq 4 элемента, а в gg 6. Длина равна длине самого короткого списка. +ff[1] +Traceback (most recent call last): + File "", line 1, in + ff[1] +TypeError: 'zip' object is not subscriptable +``` +## 2.4 Изучил функцию eval +```py +fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156') +коэффициент усиления=40 +dan +44.0 +``` +## 2.5 Изучил функцию exec +```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) +- abs - выдает значение по модулю; +- len - выдает длину объекта; +- max - выдает максимальное число из списка введенных в аргумент; +- min - выдает минимальное число из списка введенных в аргумент; +- pow - при двух аргументах: возводит первый в степень второго, при наличие третьего аргумента делит получившийся результат на третий аргумент и показывает остаток; +- sum - суммирует числа; +- divmod - возвращает кортеж (a // b, a % b), где а и b соответственно первый и второй аргумент; +- map - применяет функцию из первого аргумента к каждому элементу итерируемого объекта, который указан во втором аргументе. +```py +abs(-2) +2 +len('jhb') +3 +max(1,2) +2 +min(1,2) +1 +pow(2,3 + ) +8 +pow(2,3,4) +0 +pow(2,3,3) +2 +sum([1,2]) +3 +divmod(10,4) +(2, 2) +list(map(lambda x: x**2, [1,2,3,4,5])) +[1, 4, 9, 16, 25] +``` +## 3 Изучил функции из модуля math для работы с математическими выражениями и операциями. +- sin - считает и выдает синус аргумента в радианах; +- acos - считает и выдает арккосинус аргумента в радианах; +- degrees - переводит число в радианах в градусы; +- radians - переводит число в градусах в радианы; +- exp - выдает значение числа e возведенного в степень, которая указана в аргументе; +- log - считает натуральный логарифм числа; +- log10 - считает деcятичный логарифм числа; +- sqrt - считает корень из числа в аргументе; +- ceil - округляет число вверх; +- floor - округляет число вниз; +- pi - данная функция является представлением числа пи в питоне. +```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!. + + Raise a ValueError if x is negative or non-integral. + +math.factorial(5) +120 +math.sin(0.5) +0.479425538604203 +math.acos(0.5) +1.0471975511965979 +math.degrees(0.55) +31.51267873219528 +math.radians(30) +0.5235987755982988 +math.exp(1) +2.718281828459045 +math.log(10) +2.302585092994046 +math.log10(10) +1.0 +math.sqrt(25) +5.0 +math.ceil(4.3) +5 +math.floor(4.8) +4 +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 Изучил стандартный модуль randon для работы с псевдослучайными числами +- random - равномерно распределенное случайное число; +- uniform- равномерно распределенное случайное число в диапазоне, заданном двумя аргументами; +- randint - случайные целые числа в диапазоне от значения первого аргумента до значения второго; +- gauss - нормально распределенное случайное число с средним равным первому аргументу и стандартным отклонением равным второму аргументу; +- choice - случайный выбор из совокупности указанной в аргументе; +- shuffle - случайная перестановка элементов списка в аргументе; +- sample - случайный выбор подмножества элементов из списка в первом аргументе (количество элементов равно числу, указанному во втором аргументе); +- betavariate - случайное число с бета-распределением, где альфа равна первому аргументу, а бета равна второму аргументу; +- gammavariate - случайное число с гамма-распределением, где альфа равна первому аргументу, а бета равна второму аргументу. +```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 +> +random.seed() +r = random.random() +r +0.6274277749743772 +u = random.uniform(1, 10) +u +8.795217202035065 +rnd = random.randint(1, 10) +rnd +4 +g = random.gauss(0,5) +g +-10.142595842458078 +g = random.gauss(0,1) +g +-1.2762551362834256 +ls = ['a','b','c','d'] +ch = random.choice(ls) +ch +'a' +random.shuffle(ls) +ls +['d', 'c', 'a', 'b'] +s = random.sample(ls,3) +s +['c', 'b', 'd'] +b = random.betavariate(2, 5) +b +0.2662037969664268 +g = random.gammavariate(2,2) +g +4.673121545436751 +rnd_ls = [random.uniform(1, 10), random.gauss(5, 2), random.betavariate(2, 5), random.gammavariate(2, 2)] +rnd_ls +[4.085707425290092, 5.648252018761857, 0.05544308773047868, 5.588311173368095] +``` +## 6 Изучил модуль time для работы со временем и календарями +- time - возвращает время в секундах, прошедшее с начала эпохи, за которое обычно принимается 1.01.1970г; +- gmtime - возвращает объект класса struct_time, содержащий полную информацию о текущем времени (UTC): год (tm_year), месяц (tm_mon), день tm_mday); +- localtime - для получения «местного» времени (которое стоит на компьютере); +- asctime - преобразовывает представление времени из кортежа в строку (просто отображает время в формате строки); +- ctime - преобразовывает время в секундах, прошедшего с начала эпохи, в строку; +- sleep - прерывает работу программы на заданное время в секундах; +- mktime - преобразовывает время из типа кортежа или struct_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() +c1 +1760259525.185354 +c2=time.time()-c1 +c2 +12.37006688117981 +dat=time.gmtime() +dat +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=8, tm_min=59, tm_sec=20, tm_wday=6, tm_yday=285, tm_isdst=0) +dat.tm_mon +10 +dat.tm_year +2025 +dat.tm_min +59 +tm = time.localtime() +tm +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=12, tm_min=20, tm_sec=40, tm_wday=6, tm_yday=285, tm_isdst=0) +time.asctime() +'Sun Oct 12 12:21:46 2025' +time.ctime() +'Sun Oct 12 12:21:56 2025' +time.sleep(5) +ti +time.mktime(tm) +1760260840.0 +time.localtime(c1) +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=11, tm_min=58, tm_sec=45, tm_wday=6, tm_yday=285, tm_isdst=0) +``` +## 7 Изучил графические функции +```py +import pylab +x=list(range(-3,55,4)) +x +[-3, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53] +t=list(range(15)) +t +[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] +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() #Отображение графика на экране +``` +![[Pasted image 20251012124853.png]] +```py +X1=[12,6,8,10,7];X2=[5,7,9,11,13] +X1 +[12, 6, 8, 10, 7] +X2 +[5, 7, 9, 11, 13] +pylab.plot(X1) +[] +pylab.plot(X2) +[] +pylab.show() +``` +![[Figure_1.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]] +```py +ls = [1, 5, 2, 3, 3, 3, 2, 4, 4, 3] +pylab.hist(ls, bins=5) +(array([1., 2., 4., 2., 1.]), array([1. , 1.8, 2.6, 3.4, 4.2, 5. ]), ) +pylab.title('Гистограмма') +Text(0.5, 1.0, 'Гистограмма') +pylab.show() +``` +![[Figure_2.png]] +```py +a = ['One', 'Two', 'Three'] +b = [20, 50, 25] +pylab.bar(a, b) + +pylab.title("Столбиковая диаграмма") +Text(0.5, 1.0, 'Столбиковая диаграмма') +pylab.show() +``` +![[Figure_3.png]] +## 8 Изучил модуль statistics для работы в сфере статистики +```py +import statistics +dir(statistics) +['Counter', 'Decimal', 'Fraction', 'LinearRegression', 'NormalDist', 'StatisticsError', '_SQRT2', '__all__', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_decimal_sqrt_of_frac', '_exact_ratio', '_fail_neg', '_float_sqrt_of_frac', '_integer_sqrt_of_frac_rto', '_isfinite', '_kernel_invcdfs', '_mean_stdev', '_newton_raphson', '_normal_dist_inv_cdf', '_quartic_invcdf', '_quartic_invcdf_estimate', '_random', '_rank', '_sqrt_bit_width', '_sqrtprod', '_ss', '_sum', '_triweight_invcdf', '_triweight_invcdf_estimate', 'acos', 'asin', 'atan', 'bisect_left', 'bisect_right', 'correlation', 'cos', 'cosh', 'count', 'covariance', 'defaultdict', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'isfinite', 'isinf', 'itemgetter', 'kde', 'kde_random', 'linear_regression', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'multimode', 'namedtuple', 'numbers', 'pi', 'pstdev', 'pvariance', 'quantiles', 'random', 'reduce', 'repeat', 'sin', 'sqrt', 'stdev', 'sumprod', 'sys', 'tan', 'tau', 'variance'] +mean = statistics.mean(ls) +mean +3 +med = statistics.median(ls) +med +3.0 +mode = statistics.mode(ls) +mode +3 +``` +## 9 Завершил работу в IDLE diff --git a/TEMA4/task.md b/TEMA4/task.md new file mode 100644 index 0000000..cb01975 --- /dev/null +++ b/TEMA4/task.md @@ -0,0 +1,42 @@ +# Общее контрольное задание по теме 4 + +Хатюхин Евгений, А-02-23 + +## Задание + +Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия: + • Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления. + • Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами. + • Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели. + • Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3. + • Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита. + • Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров. + +## Решение + +```py +>>>divmod((round(cmath.phase(0.2+0.8j), 2))*20, 3) +(8.0, 2.6000000000000014) +>>>divmod(math.floor((round(cmath.phase(0.2+0.8j), 2))*20), 3) #Для получения остатка в целом виде и делении целых чисел, можно использовать такое выражение. +(8, 2) +>>>v = time.localtime() +>>>v +time.struct_time(tm_year=2025, tm_mon=9, tm_mday=11, tm_hour=14, tm_min=3, tm_sec=26, tm_wday=3, tm_yday=254, tm_isdst=0) +>>>st = v.tm_hour, v.tm_min +>>>st = str(v.tm_hour)+" hour "+str(v.tm_min)+" min " +>>>st +'14 hour 3 min ' +>>>ned = ["пн", "вт", "ср", "чт", "пт", "сб", "вскр"] +>>>random.sample(ned, 3) +['пн', 'вскр', 'вт'] +>>>random.choice(list(range(14, 33, 3))) +20 +>>>N = round(random.gauss(15, 4)) +>>>N +15 +>>>import string #Импортировал модуль в котором есть латинский алфавит, чтобы из него выбрать буквы. Без использования этого модуля создавать список с алфавитом нужно было бы вручную. +>>>random.sample(string.ascii_letters, N) +['M', 'J', 'X', 'H', 'R', 'D', 'V', 'U', 'c', 'g', 'l', 'k', 'm', 't', 'w'] +>>>time.localtime().tm_min - v.tm_min +24 +``` \ No newline at end of file