Сравнить коммиты

...

2 Коммитов

Автор SHA1 Сообщение Дата
TabolinIA 5f9fa115b0 Merge branch 'main' of http://uit.mpei.ru/git/TabolinIA/python-labs
2 недель назад
TabolinIA 0c7aa1f909 Отчет по Теме 4
2 недель назад

Двоичные данные
TEMA4/Ris1.png

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

После

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

Двоичные данные
TEMA4/Ris2.png

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

После

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

Двоичные данные
TEMA4/Ris3.png

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

После

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

Двоичные данные
TEMA4/Ris4.png

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

После

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

@ -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))
<class 'float'>
type(round(123.456))
<class 'int'>
```
## 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))
<class 'range'>
<class 'list'>
```
Функция `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
<zip object at 0x00000231E0107B40>
tuple(ff)
((76, 'Tabolin'), (85, 'Berezhkov'), (94, 'Krishtul'), (103, 'Stepanischev'))
```
Чтобы просмотреть содержимое результата функции `zip`, преобразуем его в кортеж.
В полученном кортеже количество элементов определяется меньшим из размеров аргументов функции `zip`.
```py
ff[1,1]
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
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)
[<matplotlib.lines.Line2D object at 0x000001A4B5840910>]
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)
([<matplotlib.patches.Wedge object at 0x000001A4B4096120>, <matplotlib.patches.Wedge object at 0x000001A4B7F38F50>, <matplotlib.patches.Wedge object at 0x000001A4B7F38B90>, <matplotlib.patches.Wedge object at 0x000001A4B58ED450>], [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)
<BarContainer object of 4 artists>
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. ]), <BarContainer object of 10 artists>)
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
```
Загрузка…
Отмена
Сохранить