22 KiB
Отчет по теме 4
Подольский Никита, А-01-23
1. Запуск интерактивной оболочки IDLE
2. Стандартные функции
2.1 Функция 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(123.456,1)
123.5
>>> round(123.456,0)
123.0
>>> round(123.456)
123
>>> type(round(123.456,1))
<class 'float'>
>>> type(round(123.456,0))
<class 'float'>
>>> type(round(123.456))
<class 'int'>
2.2 Функция range – создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1.
>>> gg=range(76,123,9)
>>> list(gg)
[76, 85, 94, 103, 112, 121]
>>> range(23)
range(0, 23)
>>> type(range(23))
<class 'range'>
>>> 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]
Объект range(23) будет содержать последовательность целых чисел, начиная с 0 и до 22 (так как 23 не включается). Чтобы это увидить, необходимо применить list(). range — это легковесный объект, который генерирует числа на лету, а не хранит их все в памяти, поэтому преобразование в list нужно только для просмотра. Границы диапазона: от 0 и до 23, проход с шагом 1 по умолчанию(Если вызываем просто range(23), выводится только начальное и конечное значение).
2.3 Функция zip - создание итерируемого объекта из кортежей
>>> qq = ["Podolsky", "Zhalnin", "Melnikov", "Bushmanov"]
>>> ff = zip(gg, qq)
>>> ff
<zip object at 0x10ce5cc40>
>>> tuple(ff)
((76, 'Podolsky'), (85, 'Zhalnin'), (94, 'Melnikov'), (103, 'Bushmanov'))
>>> ff[1]
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
ff[1]
TypeError: 'zip' object is not subscriptable
К объекту ff нельзя обратиться по индексу из-за того что он не итерируемый, так же он является не изменяемым.
2.4 Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки.
>>> fff = float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=73
>>> fff
73.0
>>> dan
209.0
2.5 Функция exec – чтение и выполнение объекта-аргумента функции.
>>> exec(input('введите инструкции:'))
введите инструкции:
>>> perem=-123.456;gg=round(abs(perem)+98,3)
>>> gg
221.456
Функции eval() и exec() нужно использовать с осторожностью, так как они затрудняют чтение и понимание программ. Отличие eval() от exec() в том, что eval() вычисляет выражение (expression), а exec() выполняет инструкции (statements). Выражения — подмножество инструкций, отличающееся наличием результата. Например, 1, 1+2, a+3 — выражения, а присваивание или условный оператор — инструкции.
2.6. Функции abs, pow, max, min, sum, divmod, len, map.
# Функция abs (возвращает модуль числа)
>>> x = abs(-25)
>>> x
25
# Функция pow (возведение в степень)
>>> pow(3, 4)
81
>>> pow(7, 3, 5) # 7**3 = 343, затем 343 % 5 = 3
3
# Функции max и min (поиск максимума и минимума)
>>> max(12, 7, 29)
29
>>> min(-8, 15, 0)
-8
# Функция sum (суммирование элементов)
>>> sum([5, 10, 15])
30
>>> sum([5, 10, 15], 5)
35
# Функция divmod (возвращает кортеж: целая часть и остаток)
>>> divmod(47, 6)
(7, 5)
# Функция len (возвращает длину последовательности)
>>> len(['a', 'b', 'c', 'd'])
4
# Функция map (применяет функцию к каждому элементу)
>>> a = [2, 4, 6]
>>> b = [1, 3, 5]
>>> result = list(map(lambda x, y: x * y, a, b))
>>> result
[2, 12, 30]
3. Функции из стандартного модуля math – совокупность разнообразных математических функций.
>>>import math
>>>dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', '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', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
help(math.factorial)
Help on built-in function factorial in module math:
factorial(x, /)
Find x!.
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.
- Функция sin
>>>help(math.sin)
Help on built-in function sin in module math:
sin(x, /)
Return the sine of x (measured in radians).
>>>math.sin(math.pi / 3)
0.8660254037844386
- Функция acos
>>>help(math.acos)
Help on built-in function acos in module math:
acos(x, /)
Return the arc cosine (measured in radians) of x.
The result is between 0 and pi.
>>>math.acos(1)
0.0
- Функция degrees
>>>help(math.degrees)
Help on built-in function degrees in module math:
degrees(x, /)
Convert angle x from radians to degrees.
>>>math.degrees(math.pi / 2)
90.0
- Функция radians
>>>help(math.radians)
Help on built-in function radians in module math:
radians(x, /)
Convert angle x from degrees to radians.
>>>math.radians(360)
6.283185307179586
>>>math.radians(157)
2.7401669256310974
- Функция exp
>>>help(math.exp)
Help on built-in function exp in module math:
exp(x, /)
Return e raised to the power of x.
>>>math.exp(3)
20.085536923187668
>>>math.exp(5)
148.4131591025766
- Функция log
>>>help(math.log)
Help on built-in function log in module math:
log(...)
log(x, [base=math.e])
Return the logarithm of x to the given base.
If the base not specified, returns the natural logarithm (base e) of x.
>>>math.log(10)
2.302585092994046
>>>math.log(math.e)
1.0
- Функция log10
>>>help(math.log10)
Help on built-in function log10 in module math:
log10(x, /)
Return the base 10 logarithm of x.
>>>math.log10(10)
1.0
>>>math.log10(100)
2.0
>>>math.log10(105)
>>>2.0211892990699383
- Функция sqrt
>>>help(math.sqrt)
Help on built-in function sqrt in module math:
sqrt(x, /)
Return the square root of x.
>>>math.sqrt(16)
4.0
>>>math.sqrt(25)
5.0
- Функция ceil(округление в большую сторону)
help(math.ceil)
Help on built-in function ceil in module math:
ceil(x, /)
Return the ceiling of x as an Integral.
This is the smallest integer >= x.
>>>math.ceil(4.56)
5
>>>math.ceil(130.1)
131
- Функция floor(округление в меньшую сторону)
>>>help(math.floor)
Help on built-in function floor in module math:
floor(x, /)
Return the floor of x as an Integral.
This is the largest integer <= x.
>>>math.floor(99.999)
99
- Функция pi
>>>math.pi
3.141592653589793
4. Функции из модуля 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 - равномерно распределенное случайное число;
uniform- равномерно распределенное случайное число в диапазоне, заданном двумя аргументами;
randint - случайные целые числа в диапазоне от значения первого аргумента до значения второго; gauss - нормально распределенное случайное число с средним равным первому аргументу и стандартным отклонением равным второму аргументу; choice - случайный выбор из совокупности указанной в аргументе; shuffle - случайная перестановка элементов списка в аргументе; sample - случайный выбор подмножества элементов из списка в первом аргументе (количество элементов равно числу, указанному во втором аргументе); betavariate - случайное число с бета-распределением, где альфа равна первому аргументу, а бета равна второму аргументу; gammavariate - случайное число с гамма-распределением, где альфа равна первому аргументу, а бета равна второму аргументу.
>>>import random
>>>dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_index', '_inst', '_isfinite', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', '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 инициализирует начальное состояние генератора псевдослучайных чисел стартовым ключом, чтобы последовательность стала предсказуемой и при повторном запуске с тем же ключом получалась ровно такая же “случайность” — это нужно для воспроизводимости результатов одинковый seed = одинаковые числа, графики, выборки
- Функци random(равномерно распределенное случайное число от 0 до 1)
>>>random.random()
0.15224090837130377
>>>random.random()
0.8451183120672832
>>>random.random()
0.8392090272295469
- Функция uniform (равномерно распределенное случайное число)
>>>random.uniform(1, 5)
1.4822447721210175
>>>random.uniform(1, 500)
11.101749613668387
- Функция gauss(нормально распределенное случайное число)
>>>random.gauss(1, 5)
5.705708773458442
>>>random.gauss(12, 57)
-14.33510203993609
- Функция randint(случайные целые числа)
>>>random.randint(3, 19)
4
>>>random.randint(3, 19)
5
- Функция choice (случайный выбор из совокупности)
>>>random.choice([True, "ababba", 35, 90.3, 3+5j])
90.3
>>>random.choice([True, "ababba", 35, 90.3, 3+5j])
(3+5j)
- Функця shuffle (случайная перестановка элементов списка)
>>>lst = [True, "ababba", 35, 90.3, 3+5j]
>>>random.shuffle(lst)
>>>lst
[35, 'ababba', 90.3, (3+5j), True]
- Функция sample (случайный выбор подмножества элементов)
>>>random.sample(lst, 5)
['ababba', 90.3, True, (3+5j), 35]
>>>random.sample(lst, 1)
['ababba']
- Функция betavariate(случайное число с бета-распределением)
>>>random.betavariate(1, 2)
0.3174347054415454
>>>random.betavariate(1, 2)
0.17833765040946833
- Функция gammavariate(случайное число с гамма-распределением)
>>>random.gammavariate(2, 5)
18.174658510394487
>>>random.gammavariate(2, 5)
29.01757536081825
- Создание списка с 4 случайными значениями, подчиняющимися, соответственно, равномерному, нормальному, бета и гамма – распределениям и с любыми допустимыми значениями параметров этих распределений.
>>>ls_r = [0] * 4
>>>ls_r[0] = random.uniform(0, 5)
>>>ls_r[1] = random.gauss(0, 2)
>>>ls_r[2] = random.betavariate(1, 3)
>>>ls_r[3] = random.gammavariate(3, 2)
>>>ls_r
[3.940448252721481, -0.9946853417283795, 0.04299068887668711, 8.97265061419367]
6. Функции из модуля time – работа с календарем и со временем.
- UNIX время и текущее время time - возвращает время в секундах, прошедшее с начала эпохи, за которое обычно принимается 1.01.1970г; gmtime - возвращает объект класса struct_time, содержащий полную информацию о текущем времени (UTC): год (tm_year), месяц (tm_mon), день tm_mday)...; localtime - для получения «местного» времени (которое стоит на компьютере); asctime - преобразовывает представление времени из кортежа в строку (просто отображает время в формате строки); ctime - преобразовывает время в секундах, прошедшего с начала эпохи, в строку; sleep - прерывает работу программы на заданное время в секундах; mktime - преобразовает время из типа кортежа или struct_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
1759739386.6377628
>>>c2=time.time()-c1 # временной интервал в секундах, со времени ввода предыдущей инструкции
>>>c2
26.08662247657776
>>>dat = time.gmtime() # Эта функция возвращает, так называемое, «Всемирное координированное время» (UTC)
>>>dat.tm_mon # получение номера месяца
10
>>>dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=6, tm_hour=8, tm_min=57, tm_sec=30, tm_wday=0, tm_yday=279, tm_isdst=0)
- Текущее время с учетом часового пояса
```python
>>>mestn = time.localtime()
>>>list(mestn)
[2025, 10, 6, 12, 18, 35, 0, 279, 0]
- Функция asctime (преобразование представления времени из кортежа в строку)
>>>time.asctime(mestn)
'Mon Oct 6 12:18:35 2025'
- Функция ctime (преобразование времени в секундах, прошедшего с начала эпохи, в строку)
>>>time.ctime()
'Mon Oct 6 12:22:01 2025'
- Функция sleep (прерывание работы программы на заданное время)
>>>time.sleep(5)
- Функция mktime (преобразование времени из типа кортежа или struct_time в число секунд с начала эпохи)
>>>time.mktime(mestn)
1759742315.0
- Обратное преобразование из секунд в местное время
>>>time.localtime(c1)
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=6, tm_hour=11, tm_min=29, tm_sec=46, tm_wday=0, tm_yday=279, tm_isdst=0)
7. Графические функции
Импортируем модули mathplotlib и pylab для построения графика.
-Создание и отображение графика x(t):
>>>import matplotlib
>>>import pylab
>>>x=list(range(-3,55,4))
>>> t=list(range(15))
>>> pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x10f66a490>]
>>> pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
>>> pylab.xlabel('время')
Text(0.5, 47.04444444444444, 'время')
>>> pylab.ylabel('сигнал')
Text(93.94444444444443, 0.5, 'сигнал')
>>> pylab.show()
- Рассмотрим способ построения нескольких графиков на одном рисунке.
>>> import matplotlib
>>> import pylab
>>> X1 = [12, 6, 8, 10, 7]
>>> X2 = [5, 7, 9, 11, 13]
>>> pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x10e9f2490>]
>>> pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x1119f7390>]
>>> pylab.show()
- Теперь изучим возможность построения круговой диаграммы.
>>>region=['Центр','Урал','Сибирь','Юг']
>>> naselen=[65,12,23,17]
>>> pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x10ea60ad0>, <matplotlib.patches.Wedge object at 0x111a69090>, <matplotlib.patches.Wedge object at 0x111a69450>, <matplotlib.patches.Wedge object at 0x111a696d0>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
>>> pylab.show()
- Построение гистограммы
>>>pylab.show()
>>>data = [1, 2, 2, 3, 3, 3, 4, 4, 5]
>>>pylab.hist(data)
(array([1., 0., 2., 0., 0., 3., 0., 2., 0., 1.]), array([1. , 1.4, 1.8, 2.2, 2.6, 3. , 3.4, 3.8, 4.2, 4.6, 5. ]), <BarContainer object of 10 artists>)
>>>pylab.title('Простая гистограмма')
Text(0.5, 1.0, 'Простая гистограмма')
>>>pylab.xlabel('Значения')
Text(0.5, 0, 'Значения')
>>>pylab.ylabel('Частота')
Text(0, 0.5, 'Частота')
>>>pylab.show()
- Построение столбиковой диаграммы
>>> import matplotlib
>>> import pylab
>>> data = [1, 2, 2, 3, 3, 3, 4, 4, 5]
# Гистограмма
>>> pylab.hist(data, bins=10, edgecolor='black')
>>> pylab.title('Простая гистограмма')
>>> pylab.xlabel('Значения')
>>> pylab.ylabel('Частота')
>>> pylab.grid(axis='y', alpha=0.3)
>>> pylab.show()
8. Статистический модуль statics
>>>import statistics
>>>data = [10, 20, 30, 40, 50]
>>> statistics.mean(data)
30
>>> statistics.median(data)
30
>>> statistics.stdev(data)
15.811388300841896
>>> statistics.variance(data)
250
>>> statistics.mode(data)
10




