17 KiB
Отчёт по Теме 4
Таболин Иван А-01-23
1. Запуск IDLE и начальная настройка
Запустил и настроил оболочку IDLE, создал файл отчёта и оформил его оглавление. Сохранил файл отчёта.
import os
os.chdir('C:\\Users\\User\\Desktop\\python-labs\\TEMA4')
2. Стандартные функции
Стандартные функции находятся в модуле builtins, доступном без импорта при запуске среды.
2.1. Функция round
Функция round округляет число с заданной точностью.
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, если не указать количество значений после запятой, результат будет целым числом, в остальных случаях - вещественное число.
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.
gg=range(76,123,9);gg
range(76, 123, 9)
Правая граница не входит в последовательность. Эта функция создает итерируемый объект. Чтобы увидеть полученную последовательность чисел, его надо преобразовать, например, в список.
list(gg)
[76, 85, 94, 103, 112, 121]
type(gg);type(list(gg))
<class 'range'>
<class 'list'>
Функция range с одним аргументом создает последовательность от 0 до указанного числа с шагом 1.
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 создает общий объект, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей.
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.
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 и представленного в виде символьной строки.
fff=float(input('коэффициент усиления='));dan=eval('5*fff-156');dan
коэффициент усиления=33
9.0
2.5. Функция exec
Функция exec - чтение и выполнение объекта-аргумента функции. Этот объект должен представлять собой строку символов с совокупностью инструкций на языке Python.
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 - выполняет заданную функцию с заданными значениями
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 и узнал его содержание
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(a,b) - логарифм a по основанию b (по умолчанию b = e)
log10 - десятичный логарифм
sqrt - квадратный корень
ceil и floor - округление "вверх" и "вниз"
pi - число Пи
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
math.sin(2*math.pi/7+math.exp(0.23))
0.8334902641414562
4. Функции модуля cmath
Это совокупность функций для работы с комплексными числами
Загрузил модуль cmath и просмотрел содержащиеся в нем функции.
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
Это совокупность функций для выполнения операций с псевдослучайными числами и выборками.
Загрузил модуль random и просмотрел список содержащихся в нем функций.
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. Она задает случайное начальное состояние для псевдослучайных чисел.
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 - случайное вещественное число из гамма-распределения
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 случайными значениями, подчиняющимися, соответственно, равномерному, нормальному, бета и гамма – распределениям.
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 и просмотрел его функции
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
1760307438.705462
c2=time.time()-c1;c2
11.940115690231323
Функция gmtime возвращает объект класса struct_time, содержащий полную информацию о текущем времени. Обращение к компонентам получившегося объекта.
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
Получение "местного" времени
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 в число секунд с начала эпохи
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, содержит ряд полезных вычислительных функций и графических возможностей.
Импортировал модуль
import pylab
Ошибки не возникло. Задание списков отсчётов и отображение графика
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 отображает график на экране
Получившийся график:
Построение нескольких графиков на одном рисунке
X1=[12,6,8,10,7]
X2=[5,7,9,11,13]
pylab.plot(X1)
pylab.plot(X2)
pylab.show()
Построение круговой диаграммы
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()
pylab.bar(region,naselen)
<BarContainer object of 4 artists>
pylab.show()
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
Применение некоторых функций
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



