13 KiB
Отчет по теме 4
Сарайкина Вера, А-02-23
1. Настройка текущего каталога.
import os
os.chdir('C:\Users\Yarik\Desktop\labi\python-labs\TEMA4')
2. Стандартные функции.
2.1. Функция округления числа с заданной точностью
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
type(round(123.456,0))
<class 'float'>
type(round(123.456,1))
<class 'float'>
round(123.456)
123
type(round(123.456))
<class 'int'>
2.2. Функция range
gg=range(76,123,9)
gg
range(76, 123, 9)
type(gg)
<class 'range'>
list(gg)
[76, 85, 94, 103, 112, 121]
range(23)
range(0, 23)
#range(23) создает последовательность целых чисел от 0 до 22 с шагом 1
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]
2.3. Функция zip
qq = ["Похил", "Сарайкина", "Снегура", "Шинкаренко"]
ff=zip(gg,qq)
ff
<zip object at 0x00000293529A1180>
tuple(ff)
((76, 'Похил'), (85, 'Сарайкина'), (94, 'Снегура'), (103, 'Шинкаренко'))
ff[0]
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
ff[0]
TypeError: 'zip' object is not subscriptable
2.4. Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки.
fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=5
fff
5.0
dan
-131.0
2.5. Функция exec – чтение и выполнение объекта-аргумента функции (Этот объект должен представлять собой строку символов с совокупностью инструкций на языке Python)
exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
gg
221.456
2.6. Самостоятельное изучение функций abs, pow, max, min, sum, divmod, len, map.
gg
221.456
abs(-5)
5
pow(2, 3)
8
max([1, 5, 2])
5
min([1, 5, 2])
1
sum([1, 2, 3])
6
divmod(10, 3) # частное и остаток
(3, 1)
len("abc")
3
list(map(str, [1, 2, 3])) # применяет функцию к каждому элементу
['1', '2', '3']
3. Функции из стандартного модуля math – совокупность разнообразных математических функций.
math.sin(3.14)
0.0015926529164868282
math.acos(0.5)
1.0471975511965979
math.degrees(1)
57.29577951308232
math.radians(57.29577951308232)
1.0
math.exp(1)
2.718281828459045
math.log(2.302585092994046) # натуральный логарифм
0.834032445247956
math.log10(100)
2.0
math.sqrt(16)
4.0
math.ceil(1.2) # округление вверх
2
math.floor(0.9) # округление вниз
0
math.pi
3.141592653589793
math.sin(2 * math.pi / 7 + math.exp(0.23))
0.8334902641414562
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 – совокупность функций для выполнения операций с псевдослучайными числами и выборками.
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 (равно-мерно распределенное случайное число), uniform (равномерно распределенное случайное число), randint (случайные целые числа), gauss (нормально распределенное случайное число), randint (случайное целое число), choice (случайный выбор из совокупности), shuffle (случайная переста-новка элементов списка), sample (случайный выбор подмножества элементов), betavariate(случайное число с бета-распределением), gammavariate(случайное число с гамма-распределением).
random.random()
0.6199792494543297
random.uniform(1, 10)
7.745269197841402
random.randint(1, 6)
3
random.gauss(0, 1)
1.0442172814729307
random.choice(['a','b','c'])
'b'
lst = [1,2,3]; random.shuffle(lst)
lst
[3, 2, 1]
random.sample([1,2,3,4], 2)
[4, 2]
random.betavariate(2, 5)
0.27219690103691246
random.gammavariate(2, 1)
2.5239555636492557
Создам список с 4 случайными значениями, подчиняющимися, соответственно, равномерному, нормальному, бета и гамма – распределениям и с любыми допустимыми значениями параметров этих распределений.
spisok = [random.uniform(1, 10), random.gauss(0, 1), random.betavariate(2, 5), random.gammavariate(2, 1)]
spisok
[4.813064235823525, -0.2439125318449509, 0.12581423894318752, 1.940336067871031]
6. Функции из модуля 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()
c2=time.time()-c1
c2
18.061716318130493
c1
1760287587.2442193
dat=time.gmtime()
dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=16, tm_min=51, tm_sec=23, 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=12, tm_hour=19, tm_min=54, tm_sec=1, tm_wday=6, tm_yday=285, tm_isdst=0)
print(f"Год: {local_time.tm_year}")
Год: 2025
Изучу и попробую применить функции: asctime (преобразование представления времени из кортежа в строку) , ctime (преобразование времени в секундах, прошедшего с начала эпохи, в строку), sleep (прерывание работы программы на заданное время), mktime (преобразова-ние времени из типа кортежа или struct_time в число секунд с начала эпохи). Обратное преобразование из секунд в местное время осуществляется той же функцией localtime() time.localtime(c1)
c1 = time.time()
local_struct = time.localtime(c1)
local_struct
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=19, tm_min=59, tm_sec=42, tm_wday=6, tm_yday=285, tm_isdst=0)
time_str = time.asctime(local_struct)
time_str
'Sun Oct 12 19:59:42 2025'
time_str2 = time.ctime(c1)
time.sleep(2)
seconds = time.mktime(local_struct)
seconds
1760288382.0
new_struct = time.localtime(seconds)
new_struct
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=19, tm_min=59, tm_sec=42, tm_wday=6, tm_yday=285, tm_isdst=0)
7. Графические функции.
import pylab
x=list(range(-3,55,4))
t=list(range(15))
x
[-3, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53]
t
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x00000130A1F4E990>]
pylab.title
<function title at 0x00000130A1BD8F40>
pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
pylab.xlabel('время')
Text(0.5, 0, 'время')
pylab.ylabel('сигнал')
Text(0, 0.5, 'сигнал')
pylab.show()
Рассмотрим способ построения нескольких графиков на одном рисунке.
>>> X1=[12,6,8,10,7]
>>> X2=[5,7,9,11,13]
>>> pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000026ABB1756D0>]
>>> pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000026ABB175810>]
>>> pylab.show()
Изучение возможности построения круговой диаграммы
>>> region=['Центр','Урал','Сибирь','Юг'] #Метки для диаграммы
>>> naselen=[65,12,23,17] # Значения для диаграммы
>>> pylab.pie(naselen,labels=region) #Создание диаграммы в памяти
([<matplotlib.patches.Wedge object at 0x0000026ABA668050>, <matplotlib.patches.Wedge object at 0x0000026ABD80B110>, <matplotlib.patches.Wedge object at 0x0000026ABD80B4D0>, <matplotlib.patches.Wedge object at 0x0000026ABD80B750>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
>>> pylab.show() #Отображение диаграммы
попробую применить функции hist и bar для построения гистограмм и столбиковых диаграмм.
data = [1, 2, 2, 3, 3, 3, 4, 4, 5]
pylab.hist(data,5)
(array([1., 2., 3., 2., 1.]), array([1. , 1.8, 2.6, 3.4, 4.2, 5. ]), <BarContainer object of 5 artists>)
pylab.show()
c = ['A', 'B', 'C']
v = [10, 25, 15]
pylab.bar(c, v)
<BarContainer object of 3 artists>
pylab.show()
8. Самостоятельное изучение состава статистического модуля statistics.
data = [1, 2, 2, 3, 3, 3, 4, 4, 5]
import statistics
sred = statistics.mean(data) # среднее значение
moda = statistics.mode(data) # Мода (наиболее частое значение)
often
3
mediana = statistics.median(data) # медиана
mediana
3


