форкнуто от main/python-labs
Родитель
c29ce51b81
Сommit
80b9b9d9de
@ -0,0 +1,272 @@
|
||||
# Отчет по теме 4
|
||||
|
||||
Криви Анастасия, А-02-23
|
||||
|
||||
## 1 Запуск IDLE
|
||||
Встроенные функции – это готовые к использованию функции, реализующие различные полезные операции, необходимость в которых часто возникает при решении прикладных задач. Часть из них имеется в виде стандартных функций – то есть они не требуют дополнительных усилий (готовы к употреблению сразу после запуска среды Python и относятся к классу 'builtin_function_or_method').
|
||||
|
||||
## 2 Стандартные функции
|
||||
```py
|
||||
import builtins
|
||||
dir(builtins)
|
||||
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
|
||||
```
|
||||
## 2.1 Функция round
|
||||
Округление числа с заданной точностью. Cправка по назначению этой функции:
|
||||
```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.
|
||||
```
|
||||
Использование функции на примерах
|
||||
```py
|
||||
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
|
||||
Создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1
|
||||
```py
|
||||
gg=range(76,123,9)
|
||||
gg
|
||||
range(76, 123, 9) #«итерируемый объект» класса range. Чтобы увидеть получившуюся последовательность чисел, его надо преобразовать, например, в список, обычным способом
|
||||
list(gg)
|
||||
[76, 85, 94, 103, 112, 121]
|
||||
```
|
||||
где 76 - левая граница, 123 - правая граница, а 9 - шаг
|
||||
```py
|
||||
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]
|
||||
```
|
||||
по умолчанию отсчет от нуля с шагом 1 жо заданного 23(не включительно!)
|
||||
|
||||
## 2.3 Функция zip
|
||||
Создание общего объекта, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей
|
||||
(zip – застежка-«молния»)
|
||||
|
||||
Длина результирующего объекта равна длине самого короткого объекта из двух аргументов функции!
|
||||
```py
|
||||
qq = ['Криви','Заленкина', 'Капитонов', 'Киреев']; type(qq)
|
||||
<class 'list'>
|
||||
ff=zip(gg,qq)
|
||||
ff
|
||||
<zip object at 0x00000151590F1740>
|
||||
tuple(ff)
|
||||
((76, 'Криви'), (85, 'Заленкина'), (94, 'Капитонов'), (103, 'Киреев'))
|
||||
ff[1] # нельзя обратиться по индексу
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#5>", line 1, in <module>
|
||||
ff[1]
|
||||
TypeError: 'zip' object is not subscriptable
|
||||
```
|
||||
## 2.4 Функция eval
|
||||
Вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки
|
||||
```py
|
||||
fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
|
||||
коэффициент усиления=1
|
||||
dan
|
||||
-151.0
|
||||
type(dan)
|
||||
<class 'float'>
|
||||
```
|
||||
## 2.5 Функция exec
|
||||
Чтение и выполнение объекта-аргумента функции. Этот объект должен представлять собой строку символов с совокупностью инструкций на языке Python
|
||||
|
||||
```py
|
||||
exec(input('введите инструкции:'))
|
||||
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
|
||||
gg
|
||||
221.456
|
||||
```
|
||||
## 2.6 Функции abs, pow, max, min, sum, divmod, len, map
|
||||
```py
|
||||
abs(-10) # Модуль числа
|
||||
10
|
||||
pow(2, 2) # Возведение числа в степень
|
||||
4
|
||||
max(1426, 54312, 335, 140)
|
||||
54312
|
||||
min(0, 346, 3531, 1450)
|
||||
0
|
||||
sum([1, 12, 0, 6])
|
||||
19
|
||||
divmod(10,2) # Кортеж с двумя элементами: результатами целочисленного деления и остатком
|
||||
(5, 0)
|
||||
len([261, 25426, 23])
|
||||
3
|
||||
list(map(abs,[-12038, -231974]))
|
||||
[12038, 231974]
|
||||
```
|
||||
## 3 Функции из стандартного модуля math.
|
||||
Cовокупность разнообразных математических функций
|
||||
```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']
|
||||
|
||||
help(math.factorial)
|
||||
Help on built-in function factorial in module math:
|
||||
|
||||
factorial(n, /)
|
||||
Find n!.
|
||||
math.factorial(5)
|
||||
120
|
||||
math.log10(1)
|
||||
0.0
|
||||
math.acos(1)
|
||||
0.0
|
||||
math.degrees(100) #из радиан в градусы
|
||||
5729.5779513082325
|
||||
math.radians(1029) #из градусов в радианы
|
||||
17.959438003021653
|
||||
math.log(0.321846)
|
||||
-1.1336821087105013
|
||||
math.sqrt(90)
|
||||
9.486832980505138
|
||||
math.ceil(10.1) #округление вверх
|
||||
11
|
||||
math.floor(10.9) #округление вниз
|
||||
10
|
||||
```
|
||||
Вычисление значения функции:
|
||||

|
||||
```py
|
||||
math.sin((2*math.pi)/7 + math.exp(0.23))
|
||||
0.8334902641414562
|
||||
```
|
||||
## 4 Функции из модуля cmath
|
||||
Cовокупность функций для работы с комплексными числами.
|
||||
|
||||
```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']
|
||||
cmath.sqrt(1.2-0.5j) #извление квадратного корня из комплексного числа
|
||||
(1.118033988749895-0.22360679774997896j)
|
||||
cmath.phase(1-0.5j) #расчет фазы
|
||||
-0.4636476090008061
|
||||
```
|
||||
## 5 Стандартный модуль random
|
||||
Cовокупность функций для выполнения операций с псевдослу-чайными числами и выборками
|
||||
|
||||
```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']
|
||||
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.random() #равномерно распределенное случайное число
|
||||
0.07336031762583761
|
||||
random.uniform(1,2) #равномерно распределенное случайное число
|
||||
1.137488979303296
|
||||
random.randint(1,10) #случайное целое число
|
||||
9
|
||||
random.gauss() #нормально распределенное случайное число
|
||||
0.014238556699878042
|
||||
help(random.choice)
|
||||
Help on method choice in module random:
|
||||
|
||||
choice(seq) method of random.Random instance
|
||||
Choose a random element from a non-empty sequence.
|
||||
|
||||
random.choice([10,104,2,23]) #случайный выбор элемента из совокупности
|
||||
10
|
||||
s = ['12','212','kjd','134nh']
|
||||
random.shuffle(s) #перемешивание элементов списка
|
||||
s
|
||||
['kjd', '212', '12', '134nh']
|
||||
random.sample(s,2) #получение выборки заданной размерности из совокупности
|
||||
['134nh', '12']
|
||||
random.betavariate(1, 232) #cлучайное число с бета-распределением
|
||||
0.003122288899067793
|
||||
random.gammavariate(1, 21) #cлучайное число с гамма-распределением
|
||||
30.78691787356758
|
||||
```
|
||||
Создание списка с 4 случайными значениями, подчиняющимися равномерному, нормальному, бета и гамма - рапределениям соответственно
|
||||
|
||||
```py
|
||||
s=[random.random(), random.gauss(), random.betavariate(1,10), random.gammavariate(1,10)]; s
|
||||
[0.10166127692065208, -0.9624978096753845, 0.00956693409670233, 3.1161536544662676]
|
||||
```
|
||||
## 6 Функции из модуля time
|
||||
Работа с календарем и со временем
|
||||
|
||||
```py
|
||||
c1=time.time() #время в секундах, прошедшее с начала эпохи, за которое обычно принимается 1.01.1970г
|
||||
c1
|
||||
1760880089.5032163
|
||||
c2=time.time()-c1 #временной интервал в секундах, со времени ввода предыдущей инструкции
|
||||
c2
|
||||
15.655876636505127
|
||||
```
|
||||
с помощью этой функции можно измерять временные промежутки в секундах
|
||||
|
||||
Функция, возвращающая объект класса struct_time, содержащий полную информацию о текущем времени: год (tm_year), месяц (tm_mon), день (tm_mday).
|
||||
```py
|
||||
dat=time.gmtime()
|
||||
dat
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=19, tm_hour=14, tm_min=9, tm_sec=24, tm_wday=6, tm_yday=292, tm_isdst=0) #Эта функция возвращает, так называемое, «Всемирное координированное время» (UTC). Москов-ское время MSK опережает UTC на 3 часа
|
||||
|
||||
dat.tm_mon
|
||||
10
|
||||
dat.tm_hour
|
||||
14
|
||||
dat.tm_year
|
||||
2025
|
||||
|
||||
dat=time.localtime(); dat #получение «местного» времени
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=19, tm_hour=17, tm_min=13, tm_sec=35, tm_wday=6, tm_yday=292, tm_isdst=0)
|
||||
|
||||
l=time.localtime()
|
||||
time.asctime(l)
|
||||
'Sun Oct 19 17:20:49 2025' #преобразование представления времени из кортежа в строку
|
||||
time.ctime() #преобразование времени в секундах, прошедшего с начала эпохи, в строку
|
||||
'Sun Oct 19 17:15:49 2025'
|
||||
t=time.asctime();type(t)
|
||||
<class 'str'>
|
||||
t1=time.ctime(); type(t1)
|
||||
<class 'str'>
|
||||
time.sleep(3) #прерывание работы программы на заданное время
|
||||
time.mktime(l) #из кортежа в секунды с начала эпохи
|
||||
1760883649.0
|
||||
time.localtime(c1) #обратное преобразование из секунд в местное время осуществляется той же функцией
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=19, tm_hour=16, tm_min=21, tm_sec=29, tm_wday=6, tm_yday=292, tm_isdst=0)
|
||||
```
|
||||
## 7 Графические функции
|
||||
|
||||
В развернутой версии Python должны быть установлены модули пакета matplotlib, в состав которого входит модуль pylab, содержащий ряд полезных вычислительных функций и графических возможностей.
|
||||
Импорт модуля инструкции
|
||||
|
||||
|
||||
|
После Ширина: | Высота: | Размер: 1.3 KiB |
|
После Ширина: | Высота: | Размер: 20 KiB |
|
После Ширина: | Высота: | Размер: 26 KiB |
|
После Ширина: | Высота: | Размер: 15 KiB |
|
После Ширина: | Высота: | Размер: 6.9 KiB |
|
После Ширина: | Высота: | Размер: 5.1 KiB |
@ -0,0 +1,51 @@
|
||||
# Общее контрольное задание по теме 4
|
||||
Криви Анастасия А-02-23
|
||||
|
||||
## Задание
|
||||
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
|
||||
1. Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
|
||||
2. Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
|
||||
3. Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
|
||||
4. Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
|
||||
5. Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
|
||||
6. Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
|
||||
|
||||
## Решение
|
||||
|
||||
1. Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления
|
||||
```py
|
||||
import cmath
|
||||
divmod(round(cmath.phase(0.2+0.8j),2)*20,3)
|
||||
(8.0, 2.6000000000000014)
|
||||
```
|
||||
2. Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
|
||||
```py
|
||||
MosTime = time.gmtime()
|
||||
print("Current time: {}:{}".format(MosTime.tm_hour + 3, MosTime.tm_min))
|
||||
Current time: 10:02
|
||||
```
|
||||
3. Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
|
||||
```
|
||||
D = ['ПН', 'ВТ', 'СР','ЧТ', 'ПТ', 'СБ', 'ВС']
|
||||
random.sample(D,3)
|
||||
['СБ', 'ПТ', 'ЧТ']
|
||||
```
|
||||
4. Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
|
||||
```py
|
||||
random.choice(range(14, 33, 3))
|
||||
20
|
||||
```
|
||||
5. Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
|
||||
```py
|
||||
N = math.floor(random.gauss(15, 4)); N
|
||||
15
|
||||
l=random.sample(string.ascii_letters, N); l
|
||||
['P', 'H', 'X', 'B', 's', 'T', 'z', 'N', 'E', 'l', 'I', 'w', 'o', 'u', 'C']
|
||||
```
|
||||
6.Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
|
||||
```py
|
||||
t = round(time.time() - time.mktime(localTime))
|
||||
t // 60
|
||||
6 minutes
|
||||
```
|
||||
|
||||
Загрузка…
Ссылка в новой задаче