форкнуто от main/python-labs
Сравнить коммиты
Ничего общего в коммитах. '5f9fa115b044892e63696d41e8dd873a4f39ede1' и 'c7c1f29632907657e57529d4b32ca30386db1cbe' имеют совершенно разные истории.
5f9fa115b0
...
c7c1f29632
|
До Ширина: | Высота: | Размер: 19 KiB |
|
До Ширина: | Высота: | Размер: 15 KiB |
|
До Ширина: | Высота: | Размер: 8.3 KiB |
|
До Ширина: | Высота: | Размер: 5.7 KiB |
@ -1,385 +0,0 @@
|
|||||||
# Отчёт по Теме 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` отображает график на экране
|
|
||||||
Получившийся график:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Построение нескольких графиков на одном рисунке
|
|
||||||
```py
|
|
||||||
X1=[12,6,8,10,7]
|
|
||||||
X2=[5,7,9,11,13]
|
|
||||||
pylab.plot(X1)
|
|
||||||
pylab.plot(X2)
|
|
||||||
pylab.show()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Построение круговой диаграммы
|
|
||||||
```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()
|
|
||||||
```
|
|
||||||

|
|
||||||
Функции `hist` и `bar`
|
|
||||||
```py
|
|
||||||
pylab.bar(region,naselen)
|
|
||||||
<BarContainer object of 4 artists>
|
|
||||||
pylab.show()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```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()
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
## 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
|
|
||||||
```
|
|
||||||
Загрузка…
Ссылка в новой задаче