diff --git a/TEMA4/report.md b/TEMA4/report.md new file mode 100644 index 0000000..d104b29 --- /dev/null +++ b/TEMA4/report.md @@ -0,0 +1,378 @@ +# Отчёт по теме 4 +Зеленкина Катерина Михайловна, А-02-23 + +## Пункт 1. Запуск IDLE +## Пункт 2. Стандартные функции +### Пункт 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. + +>>> a=round(123.456,1); a; type(a) +123.5 + +>>> b=round(123.456,0); b; type(b) +123.0 + +``` +__Пояснение:__ Разница только в количестве знаков после запятой в результате (в первом - до 1 десятичного знака, во-втором - до 0), но тип данных одинаковый + +```py +>>> c=round(123.456); c; type(c) +123 + +``` +__Пояснение:__ Произошло округление до целого, и сохранился в "int" + +## Пункт 2.2. Функция range +__range__ - создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1. + +```py +>>> gg=range(76,123,9); gg #генерирует числа с 76 до 123 (пока не будет больше/равно) с шагом 9 +range(76, 123, 9) +>>> type(gg) + +>>> list(gg) +[76, 85, 94, 103, 112, 121] +>>> range(23) #Будет последовательность от 0 до 22 включительно с шагом 1 +range(0, 23) +``` + +## Пункт 2.3. Функция zip +__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[0] +Traceback (most recent call last): + File "", line 1, in + ff[0] +TypeError: 'zip' object is not subscriptable +>>> ff_list= list(zip(gg, qq)); ff_list[0] +(76, 'Зеленкина') +``` + +### Пункт 2.4. Функция eval +__eval__ - вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки + +```py +>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156') +коэффициент усиления=20 +>>> dan +-56.0 +``` + +### Пункт 2.5. Функция exec + +__exec__ - чтение и выполнение объекта-аргумента функции. + +```py +exec(input('введите инструкции:')) +введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3) +gg +221.456 +``` + +### Пункт 2.6. Самостоятельное применение функций + +```py +>>> abs(-100) +100 + +>>> pow(5,2) +25 + +>>> max(1,2,3,4,199, 13) +199 + +>>> min(4,5,-10,-3,2) +-10 + +>>> sum([4,8,3]) +15 + +>>> divmod(8,2) +(4, 0) + +>>> len('Привет, друг!') +13 + +>>> n=[10,20,30,45] +>>> map(str,n) + +>>> list(map(str,n)) +['10', '20', '30', '45'] +``` +## Пункт 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!. + + Raise a ValueError if x is negative or non-integral. + +>>> math.factorial(5) +120 +``` +Функции модуля: sin, acos, degrees, radians, exp, log, log10, sqrt, ceil, floor, pi: + +```py +>>> math.sin(45) +0.8509035245341184 +>>> math.acos(0.8509035245341184) +0.553093477052002 +>>> math.degrees(180) +10313.240312354817 +>>> math.exp(1) +2.718281828459045 +>>> math.log(10) +2.302585092994046 +>>> math.log(4,2) +2.0 +>>> math.log10(10) +1.0 +>>> math.sqrt(16) +4.0 +>>> math.ceil(10.8) +11 +>>> math.ceil(-10.8) +-10 +>>> math.floor(5.5) +5 +>>> math.pi +3.141592653589793 +``` + +## Пункт 4. Функции из модуля cmath +Cовокупность функций для работы с комплексными числами. + +```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 +Cовокупность функций для выполнения операций с псевдослучайными числами и выборками. + +```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(52) +>>> random.random() +0.9783548583709967 +>>> random.uniform(1, 5) +1.2180906200418296 +>>> random.randint(1, 10) +9 +>>> random.gauss(0, 2) +-4.744196627534718 +>>> a=[15,6,8,10] +>>> random.shuffle(a); a +[8, 6, 15, 10] +>>> random.sample(range(10), 2) +[7, 0] +>>> random.sample(range(10), 3) +[0, 8, 6] +>>> random.betavariate(3, 2) +0.7782580563898469 +>>> random.gammavariate(3, 2) +7.541042451721967 +``` + +Создайте список с 4 случайными значениями^ + +```py +>>> r = [random.uniform(0, 20), random.gauss(13, 33), +random.betavariate(5, 15), random.gammavariate(9, 2)]; r +[9.981907966137051, 20.964805026393023, 0.13659209100569777, 10.30243231589178] +``` +## Пункт 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(); c1 +1759666696.7083006 +>>> c2=time.time()-c1; c2 +15.599524736404419 + +>>> dat=time.gmtime(); dat +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=5, tm_hour=12, tm_min=20, tm_sec=10, tm_wday=6, tm_yday=278, tm_isdst=0) +>>>dat.tm_mon +10 +>>> dat.tm_year +2025 +>>> dat.tm_mday +5 +>>> dat.tm_hour +12 +>>> dat.tm_min +20 +>>> dat.tm_sec +10 +>>> dat.tm_wday +6 +>>> time.localtime() +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=5, tm_hour=15, tm_min=23, tm_sec=36, tm_wday=6, tm_yday=278, tm_isdst=0) +>>> time.asctime() +'Sun Oct 5 15:23:46 2025' +>>> time.ctime() +'Sun Oct 5 15:23:52 2025' +>>> time.sleep(3) + +>>> t=(2025, 10, 5, 15, 23, 36, 6, 278, 0) +>>> obj= time.struct_time(t); obj +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=5, tm_hour=15, tm_min=23, tm_sec=36, tm_wday=6, tm_yday=278, tm_isdst=0) +>>> s=time.mktime(obj);s +1759667016.0 +>>> back=time.localtime(s);back +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=5, tm_hour=15, tm_min=23, tm_sec=36, tm_wday=6, tm_yday=278, 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() +``` + +![Скриншот графика1](график1.png) + +```py +>>> X1=[12,6,8,10,7] +>>> X2=[5,7,9,11,13] +>>> pylab.plot(X1) +[] +>>> pylab.plot(X2) +[] +>>> pylab.show() +``` + +![Скриншот графика2](график2.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() +``` +![Скриншот графика3](график3.png) + +#### Гистограммы и столбиковые диаграммы +Построим гистограмму: +```py +>>> import matplotlib.pyplot as plt +>>> ocenki = [3, 4, 4, 5, 5, 5, 4, 3, 5, 4, 5, 5, 4, 3] +>>> plt.hist(ocenki, color='orange', edgecolor='black') +(array([3., 0., 0., 0., 0., 5., 0., 0., 0., 6.]), array([3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2, 4.4, 4.6, 4.8, 5. ]), ) +>>> plt.title('Распределение оценок в классе') +Text(0.5, 1.0, 'Распределение оценок в классе') +>>> plt.xlabel('Оценки') +Text(0.5, 0, 'Оценки') +>>> plt.ylabel('Количество учеников') +Text(0, 0.5, 'Количество учеников') +>>> plt.show() +``` +![Скриншот графика4](график4.png) + +Построим столбиковую диаграмму: +```py +>>> name = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт'] +>>> number = [10, 25, 15, 30, 20] +>>> plt.bar(name, number, color='skyblue') + +>>> plt.title('Моя диаграмма') +Text(0.5, 1.0, 'Моя диаграмма') +>>> plt.xlabel('Дни недели') +Text(0.5, 0, 'Дни недели') +>>> plt.ylabel('Значения') +Text(0, 0.5, 'Значения') +>>> plt.show() +``` +![Скриншот графика5](график5.png) + +## Пункт 8. Состав модуля statistics + +```py +>>> import statistics +>>> g = [45, 50, 55, 60, 65, 70, 75, 80, 85, 200] +>>> mean = statistics.mean(g); mean +78.5 +>>> mode = statistics.mode(g); mode +45 +>>>stdev = statistics.stdev(g); stdev +44.60007473835292 +>>> variance = statistics.variance(g); variance +1989.1666666666667 +>>> quantiles = statistics.quantiles(g, n=4); quantiles +[53.75, 67.5, 81.25] +>>> harmonic_mean = statistics.harmonic_mean(g); harmonic_mean +66.96171069719155 +``` + +## Пунтк 9. Завершение сеанса IDLE diff --git a/TEMA4/task.md b/TEMA4/task.md new file mode 100644 index 0000000..c959035 --- /dev/null +++ b/TEMA4/task.md @@ -0,0 +1,56 @@ +# Общее контрольное задание + +Зеленкина Катерина, А-02-23 + +## Задание + +Реализовать, записать в текстовый файл и проанализировать результаты последовательности ин-струкций, выполняющих следующие действия: +1. Напишите и исполните единое выражение, реализующее последовательное выполнение следу-ющих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух зна-чений: округленное вниз значение от деления результата на 3 и остатка от этого деления. +2. Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами. +3. Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из это-го списка с тремя днями недели. +4. Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3. +5. Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита. +6. Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров. + +## Решение + +```py +>>> import math +>>> import cmath +>>> import time +>>> import random +>>> import string +>>> import statistics + +>>> math.floor((round(cmath.phase(0.2+0.8j), 2) * 20) / 3), (round(cmath.phase(0.2+0.8j), 2) * 20) % 3 +(8, 2.6000000000000014) + +>>> msc_time = time.localtime(time.time() + 3 * 3600); msc_time +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=6, tm_hour=4, tm_min=50, tm_sec=40, tm_wday=0, tm_yday=279, tm_isdst=0) +>>> mytime = f"{msc_time.tm_hour:02d}:{msc_time.tm_min:02d}"; mytime +'04:50' + +>>> wd = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'] +>>> p = random.sample(wd, 3); p +['Суббота', 'Среда', 'Понедельник'] + +>>> k = list(range(14, 33, 3)); k +[14, 17, 20, 23, 26, 29, 32] +>>> rand = random.choice(k);rand +14 + +>>> N = round(random.gauss(15, 4)) +>>> N=max(1,N); N +22 +>>> rl = random.choices(string.ascii_uppercase, k=N); rl +['J', 'Y', 'Z', 'Z', 'I', 'W', 'F', 'Y', 'B', 'H', 'G', 'N', 'B', 'F', 'B', 'D', 'P', 'Y', 'R', 'I', 'R', 'C'] + +>>> c = time.time();c +1759705212.9430156 +>>> inter_sec = c - time.mktime(msc_time);inter_sec +-10227.056984424591 +>>> inter_min = round(inter_sec / 60, 2); inter_min +-170.45 +``` + + diff --git a/TEMA4/график1.png b/TEMA4/график1.png new file mode 100644 index 0000000..569b14b Binary files /dev/null and b/TEMA4/график1.png differ diff --git a/TEMA4/график2.png b/TEMA4/график2.png new file mode 100644 index 0000000..838697d Binary files /dev/null and b/TEMA4/график2.png differ diff --git a/TEMA4/график3.png b/TEMA4/график3.png new file mode 100644 index 0000000..fbdb8f6 Binary files /dev/null and b/TEMA4/график3.png differ diff --git a/TEMA4/график4.png b/TEMA4/график4.png new file mode 100644 index 0000000..0d8fdaa Binary files /dev/null and b/TEMA4/график4.png differ diff --git a/TEMA4/график5.png b/TEMA4/график5.png new file mode 100644 index 0000000..f33536f Binary files /dev/null and b/TEMA4/график5.png differ