Сравнить коммиты
16 Коммитов
main
...
ac2fd98764
| Автор | SHA1 | Дата | |
|---|---|---|---|
| ac2fd98764 | |||
| 6a56424c81 | |||
| 067cf26fda | |||
| 7618bbeb2f | |||
| d988fc8b25 | |||
| fa60788940 | |||
| acec586f5c | |||
| 2622962676 | |||
| 40717bf6b9 | |||
| 018b00b0d8 | |||
| a77984b71e | |||
| 2b8221e869 | |||
| bbfe0cbd4a | |||
| ae33519ad6 | |||
| 16ff9e3ab1 | |||
| 09fe594785 |
5
TEMA1/Pr0.py
Обычный файл
5
TEMA1/Pr0.py
Обычный файл
@@ -0,0 +1,5 @@
|
|||||||
|
#Программа по Теме 1 <Цветкова Т. А.>
|
||||||
|
print('Hello')
|
||||||
|
h=input('Your name=')
|
||||||
|
import os
|
||||||
|
os.chdir(r'C:\\Users\\Admin\\Documents\\Tsvetkova\\python-labs\\TEMA1')
|
||||||
156
TEMA1/laba1.md
Обычный файл
156
TEMA1/laba1.md
Обычный файл
@@ -0,0 +1,156 @@
|
|||||||
|
# Отчет.
|
||||||
|
## Модуль 1 Основы языка программирования Python.
|
||||||
|
## Тема 1. Знакомство с интерпретатором и интерактивной оболочкой IDLE.
|
||||||
|
|
||||||
|
## Пункт1:
|
||||||
|
Была создана папка и распакован архив Tema1/
|
||||||
|
|
||||||
|
## Пункт2:
|
||||||
|
Запустили на выполнение интерпетатор Python 3.11
|
||||||
|
|
||||||
|
## Пункт3:
|
||||||
|
Ввели команду print и убедились в ее работоспособности.
|
||||||
|
```py
|
||||||
|
>>> print('Hello')
|
||||||
|
Hello
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт4:
|
||||||
|
Изучили команду input.
|
||||||
|
```py
|
||||||
|
>>> h=input('Your Name=')
|
||||||
|
Your Name=Tanya
|
||||||
|
>>> h
|
||||||
|
'Tanya'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт5:
|
||||||
|
Завершили работу интерпретатора с помощью команды
|
||||||
|
```py
|
||||||
|
>>>exit().
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт6:
|
||||||
|
Запустили IDLE Python 3.11
|
||||||
|
|
||||||
|
## Пункт7:
|
||||||
|
Изучили устройство главного командного окна
|
||||||
|
|
||||||
|
## Пункт8:
|
||||||
|
Ввели инструкции настройки рабочего каталога среды
|
||||||
|
```py
|
||||||
|
>>>import os
|
||||||
|
>>>os.chdir(r'C:\\Users\\Admin\\Documents\\Tsvetkova\\python-labs\\TEMA1')
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт9:
|
||||||
|
Установили в среде шрифт типа Arial CYR, размер 11, размер начального окна - высота 50 символов, ширина 100 символов, подкраска комментариев - коричневая
|
||||||
|
|
||||||
|
## Пункт10:
|
||||||
|
Создали новый фйл Pr0.py
|
||||||
|
```py
|
||||||
|
Программа по Теме 1 <ЦветковаТА>
|
||||||
|
>>>print('Hello')
|
||||||
|
>>>h=input('Your name=')
|
||||||
|
>>>import os
|
||||||
|
>>>os.chdir('C:\\Users\\Admin\\Desktop\\TsvetkovaTA\\Tema1\\')
|
||||||
|
```
|
||||||
|
|
||||||
|
Запустили модуль и получили результат
|
||||||
|
```py
|
||||||
|
>>>import Pr0
|
||||||
|
Hello
|
||||||
|
Your name=Tanya
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт11:
|
||||||
|
Запустили модуль prb1
|
||||||
|
```py
|
||||||
|
>>>import prb1
|
||||||
|
Как Вас зовут? Таня
|
||||||
|
Привет, Таня
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт12:
|
||||||
|
Попробовали открыть файл Pr0.cpython-34.pyc и поняли, что из-за скомпилированного бинарного файла текстовый редактор как раз-таки выдает ошибку, тк не может считать файл .рус, ожидая стандартную для него кодировку.
|
||||||
|
Комплиляция программ необходима, чтобы перевести команды из человекопонятной формы в машинный код, который может быть обработан процессором.
|
||||||
|
При выполнении скрипта Python сначала преобразовывает его в байт-код (.рус), а затем уже он компилируется с помощью виртуальный машины.
|
||||||
|
Это ускорит повторную загрузку программы.
|
||||||
|
|
||||||
|
## Пункт13:
|
||||||
|
В текстовом редакторе оболочки IDLE открыли новое окно.
|
||||||
|
Сохранили все из командного окна
|
||||||
|
|
||||||
|
## Пункт14:
|
||||||
|
В разделе помощи можно увидеть следующее
|
||||||
|
```py
|
||||||
|
About IDLE - информация о версии IDLE
|
||||||
|
IDLE Help - документация по самой IDLE
|
||||||
|
Python Docs - документация по языку Python
|
||||||
|
Turtle Demo - окно работы и помощь модуля для работы с графикой turtle
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>>help(print)
|
||||||
|
Help on built-in function print in module builtins:
|
||||||
|
|
||||||
|
print(*args, sep=' ', end='\n', file=None, flush=False)
|
||||||
|
Prints the values to a stream, or to sys.stdout by default.
|
||||||
|
|
||||||
|
sep
|
||||||
|
string inserted between values, default a space.
|
||||||
|
end
|
||||||
|
string appended after the last value, default a newline.
|
||||||
|
file
|
||||||
|
a file-like object (stream); defaults to the current sys.stdout.
|
||||||
|
flush
|
||||||
|
whether to forcibly flush the stream.
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>>help(print), help(input)
|
||||||
|
Help on built-in function print in module builtins:
|
||||||
|
|
||||||
|
print(*args, sep=' ', end='\n', file=None, flush=False)
|
||||||
|
Prints the values to a stream, or to sys.stdout by default.
|
||||||
|
|
||||||
|
sep
|
||||||
|
string inserted between values, default a space.
|
||||||
|
end
|
||||||
|
string appended after the last value, default a newline.
|
||||||
|
file
|
||||||
|
a file-like object (stream); defaults to the current sys.stdout.
|
||||||
|
flush
|
||||||
|
whether to forcibly flush the stream.
|
||||||
|
|
||||||
|
Help on built-in function input in module builtins:
|
||||||
|
|
||||||
|
input(prompt='', /)
|
||||||
|
Read a string from standard input. The trailing newline is stripped.
|
||||||
|
|
||||||
|
The prompt string, if given, is printed to standard output without a
|
||||||
|
trailing newline before reading input.
|
||||||
|
|
||||||
|
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
|
||||||
|
On *nix systems, readline is used if available.
|
||||||
|
|
||||||
|
(None, None)
|
||||||
|
```
|
||||||
|
при F1 открывается справочное окно
|
||||||
|
|
||||||
|
## Пункт15:
|
||||||
|
Узнали, что опция Окно (Window)» помогает перемещаться между открытыми окнами
|
||||||
|
```py
|
||||||
|
>>>import tdemo_chaos
|
||||||
|
>>>tdemo_chaos.main()
|
||||||
|
'Done!'
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывели на экран графическое представление
|
||||||
|
программы с часами. Есть и другие примеры программ модуля turtle,
|
||||||
|
которые можно брать за основу собственных программ, изменять или реализовывать
|
||||||
|
свои идеи
|
||||||
|
|
||||||
|
## Пункт16:
|
||||||
|
Звершили работу со средой
|
||||||
|
```py
|
||||||
|
>>>exit
|
||||||
|
```
|
||||||
15
TEMA1/protocol.py
Обычный файл
15
TEMA1/protocol.py
Обычный файл
@@ -0,0 +1,15 @@
|
|||||||
|
#Программа по Теме 1 <Цветкова Т. А.>
|
||||||
|
|
||||||
|
import os
|
||||||
|
os.chdir(r'C:\\Users\\Admin\\Documents\\Tsvetkova\\python-labs\\TEMA1')
|
||||||
|
|
||||||
|
import Pr0
|
||||||
|
Hello
|
||||||
|
Your name=Tatyana
|
||||||
|
|
||||||
|
import os
|
||||||
|
os.chdir(r'C:\\Users\\Admin\\Documents\\Tsvetkova\\python-labs\\TEMA1')
|
||||||
|
|
||||||
|
import prb1
|
||||||
|
Как Вас зовут? Tatyana
|
||||||
|
Привет, Tatyana
|
||||||
604
TEMA2/lab2.md
Обычный файл
604
TEMA2/lab2.md
Обычный файл
@@ -0,0 +1,604 @@
|
|||||||
|
# Протокол по Теме 2 <ЦветковаТА>»
|
||||||
|
## пункт2:
|
||||||
|
изучили простые объекты и присваивание
|
||||||
|
```py
|
||||||
|
>>>f1=16; f2=3
|
||||||
|
>>>f1,f2
|
||||||
|
(16, 3)
|
||||||
|
```
|
||||||
|
Или через точку с запятой. тогда друг за другом:
|
||||||
|
```py
|
||||||
|
>>> f1; f2
|
||||||
|
16
|
||||||
|
3
|
||||||
|
```
|
||||||
|
Узнаем какие объекты уже существуют в среде
|
||||||
|
```py
|
||||||
|
>>>dir()
|
||||||
|
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2']
|
||||||
|
```
|
||||||
|
|
||||||
|
Еще эта функция может показать атрибуты объекта:
|
||||||
|
```py
|
||||||
|
|
||||||
|
>>> dir (f1)
|
||||||
|
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__',
|
||||||
|
'__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__',
|
||||||
|
'__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__',
|
||||||
|
'__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__',
|
||||||
|
'__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__',
|
||||||
|
'__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__',
|
||||||
|
'__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag',
|
||||||
|
'numerator', 'real', 'to_bytes']
|
||||||
|
```
|
||||||
|
Функция del необходима для удаления объекта
|
||||||
|
```py
|
||||||
|
>>> del f1,f2
|
||||||
|
>>>dir()
|
||||||
|
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
|
||||||
|
```
|
||||||
|
## Пункт3:
|
||||||
|
```py
|
||||||
|
>>>gg1=1.6 #значение в виде вещественного числа
|
||||||
|
>>>hh1='Строка' #значение в виде символьной строки
|
||||||
|
>>>73sr=3 #неправильное имя – начинается с цифры - будет диагностика!
|
||||||
|
SyntaxError: invalid decimal literal
|
||||||
|
>>>and=7 #недопустимое имя – совпадает с ключевым словом - будет диагностика!
|
||||||
|
SyntaxError: invalid syntax
|
||||||
|
```
|
||||||
|
## Пункт4:
|
||||||
|
Вывели список ключевых слов и присвоили команду к переменной
|
||||||
|
```py
|
||||||
|
>>>import keyword
|
||||||
|
>>>keyword.kwlist
|
||||||
|
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||||
|
>>>k=keyword.kwlist
|
||||||
|
k
|
||||||
|
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||||
|
```
|
||||||
|
## Пункт5:
|
||||||
|
Выведем список встроенных идеентификаторов
|
||||||
|
```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', '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', '_', '__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']
|
||||||
|
```
|
||||||
|
модуль
|
||||||
|
```py
|
||||||
|
>>>abs(-7)
|
||||||
|
7
|
||||||
|
```
|
||||||
|
длинна
|
||||||
|
```py
|
||||||
|
>>>len([1,2])
|
||||||
|
2
|
||||||
|
```
|
||||||
|
максимум и минимум
|
||||||
|
```py
|
||||||
|
>>>max(20,5)
|
||||||
|
20
|
||||||
|
>>>min(20,5)
|
||||||
|
5
|
||||||
|
```
|
||||||
|
|
||||||
|
возведение в степень
|
||||||
|
```py
|
||||||
|
>>>pow(4,2)
|
||||||
|
16
|
||||||
|
```
|
||||||
|
возведение в степень по модулю
|
||||||
|
```py
|
||||||
|
>>>pow (5, 2, 2)
|
||||||
|
1
|
||||||
|
```
|
||||||
|
округление
|
||||||
|
```py
|
||||||
|
>>>round (33.2)
|
||||||
|
33
|
||||||
|
```
|
||||||
|
округление с определенной точностью
|
||||||
|
```py
|
||||||
|
>>>round (33.45826, 3)
|
||||||
|
33.458
|
||||||
|
```
|
||||||
|
сумма
|
||||||
|
```py
|
||||||
|
>>>sum ([2, 5])
|
||||||
|
7
|
||||||
|
```
|
||||||
|
сортировка и иобратная сортировка
|
||||||
|
```py
|
||||||
|
>>>sorted ([5, 4, 18, 40, -6, 0])
|
||||||
|
[-6, 0, 4, 5, 18, 40]
|
||||||
|
>>>sorted ([5, 4, 18, 40, -6, 0], reverse = True)
|
||||||
|
[40, 18, 5, 4, 0, -6]
|
||||||
|
```
|
||||||
|
Объединение объектов в кортеж (возвращается указатель на участок памяти)
|
||||||
|
```py
|
||||||
|
>>> list1 = [1, 2, 3]
|
||||||
|
>>> list2 = [4, 5, 6]
|
||||||
|
>>> zip (list1, list2)
|
||||||
|
<zip object at 0x0000000002C42E88>
|
||||||
|
Это итератор - указатель на объект памяти. Чтобы увидеть сам кортеж, итератор надо
|
||||||
|
преобразовать в другой объект
|
||||||
|
>>> list(zipped)
|
||||||
|
[(1, 4), (2, 5), (3, 6)]
|
||||||
|
```
|
||||||
|
## Пункт6:
|
||||||
|
Регестрочувствительность
|
||||||
|
```py
|
||||||
|
>>>Gg=45
|
||||||
|
>>>Gg
|
||||||
|
45
|
||||||
|
>>>gg
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#39>", line 1, in <module>
|
||||||
|
gg
|
||||||
|
NameError: name 'gg' is not defined. Did you mean: 'Gg'?
|
||||||
|
```
|
||||||
|
## Пункт7:
|
||||||
|
Типы объектов
|
||||||
|
```py
|
||||||
|
>>>bb1=True; bb2=False
|
||||||
|
>>>bb1;bb2
|
||||||
|
True
|
||||||
|
False
|
||||||
|
>>>type(bb1)
|
||||||
|
<class 'bool'>
|
||||||
|
тип (класс) объекта
|
||||||
|
```
|
||||||
|
Целое число (десятичное)
|
||||||
|
```py
|
||||||
|
>>> ii1 = 1234567890
|
||||||
|
>>> type(ii1)
|
||||||
|
<class 'int'>
|
||||||
|
```
|
||||||
|
|
||||||
|
Экспоненциальная форма записи числа
|
||||||
|
```py
|
||||||
|
>>> ff1 = 8.987e-12
|
||||||
|
>>> type(ff1)
|
||||||
|
<class 'float'>
|
||||||
|
```
|
||||||
|
Двоичное число (префикс 0b - binary)
|
||||||
|
```py
|
||||||
|
>>> dv1 = 0b1100101
|
||||||
|
>>> type(bb1)
|
||||||
|
<class 'bool'>
|
||||||
|
```
|
||||||
|
Восьмеричное число (0о - octal)
|
||||||
|
```py
|
||||||
|
>>> vsm1 = 0o52765
|
||||||
|
>>> type(vsm1)
|
||||||
|
<class 'int'>
|
||||||
|
```
|
||||||
|
Шестнадцатеричное число (0х - hexadecimal)
|
||||||
|
```py
|
||||||
|
>>> shest1 = 0x7109af6
|
||||||
|
>>> type(shest1)
|
||||||
|
<class 'int'>
|
||||||
|
```
|
||||||
|
Комплексное число
|
||||||
|
```py
|
||||||
|
>>> cc1 = 2 - 3j
|
||||||
|
>>> type(cc1)
|
||||||
|
<class 'complex'>
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>> a = 3.67
|
||||||
|
>>> b = 0.45
|
||||||
|
>>> cc2 = complex (a, b)
|
||||||
|
>>> cc2
|
||||||
|
(3.67+0.45j)
|
||||||
|
>>> type (cc2)
|
||||||
|
<class 'complex'>
|
||||||
|
```
|
||||||
|
Строка символов
|
||||||
|
```py
|
||||||
|
>>> ss1='Это - строка символов'
|
||||||
|
>>> ss1="Это - строка символов"
|
||||||
|
>>> ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
|
||||||
|
>>> print(ss1a)
|
||||||
|
Это - " строка символов ",
|
||||||
|
выводимая на двух строках
|
||||||
|
>>> ss1b= 'Меня зовут: \n <Цветкова ТА>'
|
||||||
|
>>> print(ss1b)
|
||||||
|
Меня зовут:
|
||||||
|
<Цветкова ТА>
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>> mnogo="""Нетрудно заметить , что в результате операции
|
||||||
|
... над числами разных типов получается число,
|
||||||
|
... имеющее более сложный тип из тех, которые участвуют в операции."""
|
||||||
|
>>> print(mnogo)
|
||||||
|
Нетрудно заметить , что в результате операции
|
||||||
|
над числами разных типов получается число,
|
||||||
|
имеющее более сложный тип из тех, которые участвуют в операции.
|
||||||
|
```
|
||||||
|
При вводе такой строки символ приглашения в начале строки не появится, пока не будет вновь введены тройные кавычки.
|
||||||
|
|
||||||
|
|
||||||
|
Обратимся к отдельным элементам с помощью квадратных кавычек
|
||||||
|
(нумерация с нуля):
|
||||||
|
```py
|
||||||
|
>>> mnogo[5]
|
||||||
|
'д'
|
||||||
|
```
|
||||||
|
Обращение начиная с последнего элемента:
|
||||||
|
```py
|
||||||
|
>>> ss1b[-1]
|
||||||
|
'>'
|
||||||
|
```
|
||||||
|
Срезы:
|
||||||
|
```py
|
||||||
|
>>> ss1[7:10]
|
||||||
|
'тро'
|
||||||
|
```
|
||||||
|
Срез с шагом в 2:
|
||||||
|
```py
|
||||||
|
>>> ss1[7:14:2]
|
||||||
|
'тоас'
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>> ss1[5:-8]
|
||||||
|
' строка '
|
||||||
|
```
|
||||||
|
|
||||||
|
Задав шаг -1, можно вывести строку в обратном порядке:
|
||||||
|
```py
|
||||||
|
>>> ss1[::-1]
|
||||||
|
'воловмис акортс - отЭ'
|
||||||
|
```
|
||||||
|
К элементу можно обратиться как по нумерации с начала, так и с конца:
|
||||||
|
```py
|
||||||
|
>>> ss1[17:3:-2]
|
||||||
|
'омсаот '
|
||||||
|
>>> ss1[-4:3:-2]
|
||||||
|
'омсаот '
|
||||||
|
```
|
||||||
|
|
||||||
|
Строка является неизменяемым объектом
|
||||||
|
```py
|
||||||
|
>>> ss1[4]='=' # Будет диагностика!
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: 'str' object does not support item assignment
|
||||||
|
>>> ss1=ss1[:4]+'='+ss1[5:]
|
||||||
|
>>> print(ss1)
|
||||||
|
Это = строка символов
|
||||||
|
```
|
||||||
|
Новый объект на основе среза из старого:
|
||||||
|
```py
|
||||||
|
>>> ss1b_cut = ss1b [::-1]
|
||||||
|
>>> ss1b_cut
|
||||||
|
'>АТ авоктевЦ< \n :тувоз янеМ'
|
||||||
|
```
|
||||||
|
## Пункт8:
|
||||||
|
Список
|
||||||
|
```py
|
||||||
|
>>> spis1 = ["111", 'spisok', 5 - 9j]
|
||||||
|
>>> stup=[0,0,1,1,1,1,1,1,1]
|
||||||
|
>>> stup
|
||||||
|
[0, 0, 1, 1, 1, 1, 1, 1, 1]
|
||||||
|
>>> pis=[1,2,3,4,
|
||||||
|
... 5,6,7,
|
||||||
|
... 8,9,10]
|
||||||
|
>>> pis
|
||||||
|
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||||
|
>>> spis1 [-1]
|
||||||
|
(5-9j)
|
||||||
|
>>> stup [-8 :: 2]
|
||||||
|
[0, 1, 1, 1]
|
||||||
|
>>> spis1[1]='Список'
|
||||||
|
>>> spis1
|
||||||
|
['111', 'Список', (5-9j)]
|
||||||
|
>>> len(spis1)
|
||||||
|
3
|
||||||
|
```
|
||||||
|
Методы списка
|
||||||
|
Добавление в конец (append)
|
||||||
|
```py
|
||||||
|
>>> help(spis1.append)
|
||||||
|
Help on built-in function append:
|
||||||
|
|
||||||
|
append(object, /) method of builtins.list instance
|
||||||
|
Append object to the end of the list.
|
||||||
|
|
||||||
|
>>> spis1.append('New item') # В конец списка добавлен элемент «New item»
|
||||||
|
>>> spis1
|
||||||
|
['111', 'Список', (5-9j), 'New item']
|
||||||
|
>>> spis1+['New item']
|
||||||
|
Только возвращает результат, но не фиксирует такое значение!
|
||||||
|
['111', 'Список', (5-9j), 'New item', 'New item']
|
||||||
|
```
|
||||||
|
Удаление элемента по индексу
|
||||||
|
```py
|
||||||
|
>>> spis1.pop(1)
|
||||||
|
'Список'
|
||||||
|
>>> spis1
|
||||||
|
['111', (5-9j), 'New item', 'Меня зовут: \n <Цветкова ТА>']
|
||||||
|
```
|
||||||
|
Вставка элемента в определенное место по индексу (insert)
|
||||||
|
```py
|
||||||
|
>>> spis1.insert(2, "hello")
|
||||||
|
>>> spis1
|
||||||
|
['111', (5-9j), 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>']
|
||||||
|
```
|
||||||
|
Удаление элемента по значению (remove)
|
||||||
|
```py
|
||||||
|
>>> help(spis1.remove)
|
||||||
|
Help on built-in function remove:
|
||||||
|
|
||||||
|
remove(value, /) method of builtins.list instance
|
||||||
|
Remove first occurrence of value.
|
||||||
|
|
||||||
|
Raises ValueError if the value is not present.
|
||||||
|
|
||||||
|
>>> spis1.remove(111)
|
||||||
|
>>> spis1
|
||||||
|
[(5-9j), 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>']
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>> spis1.remove('222')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#39>", line 1, in <module>
|
||||||
|
spis1.remove('222')
|
||||||
|
```
|
||||||
|
Добавление элементов объекта в конец другого объекта (extend)
|
||||||
|
```py
|
||||||
|
>>> help(spis1.extend)
|
||||||
|
Help on built-in function extend:
|
||||||
|
|
||||||
|
extend(iterable, /) method of builtins.list instance
|
||||||
|
Extend list by appending elements from the iterable.
|
||||||
|
>>> end1 = [77, "lab"]
|
||||||
|
>>> spis1.extend(end1)
|
||||||
|
>>> spis1
|
||||||
|
[(5-9j), 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>', '77', 'lab']
|
||||||
|
```
|
||||||
|
|
||||||
|
Полное очищение списка (clear)
|
||||||
|
```py
|
||||||
|
>>> help(spis1.clear)
|
||||||
|
Help on built-in function clear:
|
||||||
|
|
||||||
|
clear() method of builtins.list instance
|
||||||
|
Remove all items from list.
|
||||||
|
|
||||||
|
>>> end1.clear()
|
||||||
|
>>> end1
|
||||||
|
[]
|
||||||
|
```
|
||||||
|
Сортировка списка БЕЗ создания нового объекта (sort)
|
||||||
|
```py
|
||||||
|
>>> help(spis1.sort)
|
||||||
|
Help on built-in function sort:
|
||||||
|
|
||||||
|
sort(*, key=None, reverse=False) method of builtins.list instance
|
||||||
|
Sort the list in ascending order and return None.
|
||||||
|
|
||||||
|
The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
|
||||||
|
order of two equal elements is maintained).
|
||||||
|
|
||||||
|
If a key function is given, apply it once to each list item and sort them,
|
||||||
|
ascending or descending, according to their function values.
|
||||||
|
|
||||||
|
The reverse flag can be set to sort in descending order.
|
||||||
|
>>> abc = [4,7,-3,0]
|
||||||
|
>>> abc.sort(key = abs, reverse = True)
|
||||||
|
>>> abc
|
||||||
|
[7, 4, -3, 0]
|
||||||
|
```
|
||||||
|
При этом некоторые key's не применимы для некоторых типов (у string нет abs,
|
||||||
|
у complex нет длины и т.д.)
|
||||||
|
|
||||||
|
Создание копии списка (copy)
|
||||||
|
```py
|
||||||
|
>>> help(abc.copy)
|
||||||
|
Help on built-in function copy:
|
||||||
|
|
||||||
|
copy() method of builtins.list instance
|
||||||
|
Return a shallow copy of the list.
|
||||||
|
|
||||||
|
>>> abccopy=abc.copy()
|
||||||
|
>>> abccopy
|
||||||
|
[7, 4, -3, 0]
|
||||||
|
```
|
||||||
|
Поиск индекса по значению (index)
|
||||||
|
```py
|
||||||
|
>>> help(abccopy.index)
|
||||||
|
Help on built-in function index:
|
||||||
|
|
||||||
|
index(value, start=0, stop=9223372036854775807, /) method of builtins.list instance
|
||||||
|
Return first index of value.
|
||||||
|
|
||||||
|
Raises ValueError if the value is not present.
|
||||||
|
|
||||||
|
>>> abccopy.index(0)
|
||||||
|
3
|
||||||
|
```
|
||||||
|
Подсчет количества элементов по значению (count)
|
||||||
|
```py
|
||||||
|
>>> help(abccopy.count)
|
||||||
|
Help on built-in function count:
|
||||||
|
|
||||||
|
count(value, /) method of builtins.list instance
|
||||||
|
Return number of occurrences of value.
|
||||||
|
|
||||||
|
>>> abccopy.count(4)
|
||||||
|
1
|
||||||
|
```
|
||||||
|
Вложенные списки:
|
||||||
|
```py
|
||||||
|
>>> spis2=[spis1,[4,5,6,7]]
|
||||||
|
>>> spis2
|
||||||
|
[['111', (5-9j), 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>', '77', 'lab'], [4, 5, 6, 7]]
|
||||||
|
>>> spis2[0][1]
|
||||||
|
(5-9j)
|
||||||
|
>>> spis2[0][1]=78
|
||||||
|
>>> spis2
|
||||||
|
[['111', 78, 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>', '77', 'lab'], [4, 5, 6, 7]]
|
||||||
|
>>> spis1
|
||||||
|
[['111', 78, 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>', '>'
|
||||||
|
```
|
||||||
|
spis1 тоже изменился. Это происходит потому, что python работает не просто с
|
||||||
|
объектами, а с ссылками на участки памяти. То есть, в Python списки передаются по ссылке,
|
||||||
|
а не по значению.
|
||||||
|
|
||||||
|
Кортеж: последовательность как список, но неизменяемая как строка.
|
||||||
|
```py
|
||||||
|
>>> kort1=(222,'Kortezh',77+8j)
|
||||||
|
>>> kort1= kort1+(1,2)
|
||||||
|
>>> kort1= kort1+(ss1b,)
|
||||||
|
>>> kort1
|
||||||
|
(222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n <Цветкова ТА>')
|
||||||
|
>>> kort2=kort1[:2]+kort1[3:]
|
||||||
|
>>> kort2
|
||||||
|
(222, 'Kortezh', 1, 2, 'Меня зовут: \n <Цветкова ТА>')
|
||||||
|
>>> kort1.index(2)
|
||||||
|
4
|
||||||
|
>>> kort1.count(222)
|
||||||
|
1
|
||||||
|
>>> kort1[2]=90
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: 'tuple' object does not support item assignment
|
||||||
|
>>> kortstr = ("gjgvu", 4, [1,2,3], (1,2))
|
||||||
|
>>> kortstr
|
||||||
|
('gjgvu', 4, [1, 2, 3], (1, 2))
|
||||||
|
>>> type(kortstr[3])
|
||||||
|
<class 'tuple'>
|
||||||
|
>>> type(kortstr[2])
|
||||||
|
<class 'list'>
|
||||||
|
```
|
||||||
|
|
||||||
|
Словарь (dictionary) - содержит в себе совокупность пар
|
||||||
|
"ключ (key) (неизменяемый)": "значение (value) (любого типа)"
|
||||||
|
```py
|
||||||
|
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
|
||||||
|
>>> dic1
|
||||||
|
{'Saratov': 145, 'Orel': 56, 'Vologda': 45}
|
||||||
|
>>> dic1[1]
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#99>", line 1, in <module> #как видно, обратиться по индексу нельзя
|
||||||
|
dic1[1]
|
||||||
|
KeyError: 1
|
||||||
|
>>> dic1['Orel']
|
||||||
|
56
|
||||||
|
>>> dic1['Pskov']=78
|
||||||
|
>>> dic1
|
||||||
|
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
|
||||||
|
>>> sorted(dic1.keys())
|
||||||
|
['Orel', 'Pskov', 'Saratov', 'Vologda']
|
||||||
|
>>> sorted(dic1.values())
|
||||||
|
[45, 56, 78, 145]
|
||||||
|
>>> dic2={1:'mean',2:'standart deviation',3:'correlation'}
|
||||||
|
>>> dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
|
||||||
|
>>> dic3['statistics'][2]
|
||||||
|
'standart deviation'
|
||||||
|
>>> dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
|
||||||
|
>>> dic4
|
||||||
|
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня зовут: \n <Цветкова ТА>'}
|
||||||
|
>>> dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
|
||||||
|
>>> dic5
|
||||||
|
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут: \n <Цветкова ТА>'}
|
||||||
|
```
|
||||||
|
Создание собственного словаря на основе кортежа из семи элементов и списка из пяти:
|
||||||
|
```py
|
||||||
|
>>> a0223=('спать', 'учиться','работать', 'кмы','барс','лекции','общежитие')
|
||||||
|
>>> a0123=['1', '2', '3', '4', '5']
|
||||||
|
>>> MPEI=dict(zip(a0123, a0223))
|
||||||
|
>>> MPEI
|
||||||
|
{'1': 'спать', '2': 'учиться', '3': 'работать', '4': 'кмы', '5': 'барс'}
|
||||||
|
```
|
||||||
|
В итоговом словаре пять объектов. Это связано с работой функции zip:
|
||||||
|
длина итогового объекта = минимальной длине составляющего
|
||||||
|
объекта.
|
||||||
|
|
||||||
|
Словари: состоят из НЕповторяющихся неизменяемых элементов
|
||||||
|
```py
|
||||||
|
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
|
||||||
|
>>> mnoz1
|
||||||
|
{'двигатель', 'линия связи', 'датчик', 'микропроцессор'}
|
||||||
|
>>> len(mnoz1)
|
||||||
|
4
|
||||||
|
>>> 'датчик' in mnoz1
|
||||||
|
True
|
||||||
|
>>> mnoz1.add('реле')
|
||||||
|
>>> mnoz1.remove('линия связи')
|
||||||
|
>>> mnoz1
|
||||||
|
{'реле', 'микропроцессор', 'датчик', 'двигатель'}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Общее контрольное задание:
|
||||||
|
|
||||||
|
1. Создать переменную с именем familia и со значением -
|
||||||
|
символьной строкой – своей фамилией в латинской транскрипции.
|
||||||
|
```py
|
||||||
|
>>> familia = 'Tsvetkova'
|
||||||
|
```
|
||||||
|
2. Создать переменную со значением, совпадающим с первой
|
||||||
|
буквой из familia.
|
||||||
|
```py
|
||||||
|
>>> fam1 = familia[0]
|
||||||
|
>>> fam1
|
||||||
|
'T'
|
||||||
|
```
|
||||||
|
3. Создать переменную с именем sp_kw со значением –
|
||||||
|
списком всей ключевых слов языка Python.
|
||||||
|
```py
|
||||||
|
>>> import keyword
|
||||||
|
>>> sp_kw = keyword.kwlist
|
||||||
|
>>> sp_kw
|
||||||
|
['False', 'None', 'True', '__peg_parser__', 'and',
|
||||||
|
'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def',
|
||||||
|
'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if',
|
||||||
|
'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
|
||||||
|
'return', 'try', 'while', 'with', 'yield']
|
||||||
|
```
|
||||||
|
4. Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в
|
||||||
|
командном окне IDLE убедитесь, что это значение удалено из списка.
|
||||||
|
```py
|
||||||
|
>>> sp_kw.remove('nonlocal')
|
||||||
|
>>> sp_kw
|
||||||
|
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert',
|
||||||
|
'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif',
|
||||||
|
'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import',
|
||||||
|
'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try',
|
||||||
|
'while', 'with', 'yield']
|
||||||
|
```
|
||||||
|
5. Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов
|
||||||
|
из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип
|
||||||
|
переменной – это tuple.
|
||||||
|
```py
|
||||||
|
>>> kort_nam = ('Stas', 'Dana', 'Katya', 'Tanya')
|
||||||
|
>>> type(kort_nam)
|
||||||
|
<class 'tuple'>
|
||||||
|
```
|
||||||
|
6. Напишите инструкцию, добавляющую в kort_nam имена
|
||||||
|
еще двух студентов.
|
||||||
|
```py
|
||||||
|
>>> kort_nam += ('Andrey', 'Nastya')
|
||||||
|
>>> kort_nam
|
||||||
|
('Stas', 'Dana', 'Katya', 'Tanya', 'Andrey', 'Nastya')
|
||||||
|
```
|
||||||
|
7. Напишите инструкцию, позволяющую определить, сколько раз в
|
||||||
|
кортеже присутствуют студенты с именем «Дима».
|
||||||
|
```py
|
||||||
|
>>> kort_nam.count("Dima")
|
||||||
|
0
|
||||||
|
```
|
||||||
|
8. Создайте словарь dict_bas, в котором ключами являются русские
|
||||||
|
названия типов переменных, использованных в предыдущих операторах,
|
||||||
|
а значениями – ранее созданные переменные, соответствующие этим типам.
|
||||||
|
```py
|
||||||
|
>>> dict_bas = {"строка": familia, "символ": fam1, "список": sp_kw,
|
||||||
|
"кортеж": kort_nam,}
|
||||||
|
>>> dict_bas
|
||||||
|
{'строка': 'Tsvetkova', 'символ': 'T', 'список': ['False', 'None', 'True',
|
||||||
|
'__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class',
|
||||||
|
'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from',
|
||||||
|
'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise',
|
||||||
|
'return', 'try', 'while', 'with', 'yield'], 'кортеж': ('Stas', 'Dana', 'Katya', 'Tanya', 'Andrey', 'Nastya')}
|
||||||
|
```
|
||||||
48
TEMA3/Test.md
Обычный файл
48
TEMA3/Test.md
Обычный файл
@@ -0,0 +1,48 @@
|
|||||||
|
## 1)Для чего предназначено предложение "Окно (Window)" главного меню?
|
||||||
|
Для быстрого переключения между различными открытыми окнами в среде IDLE
|
||||||
|
|
||||||
|
## 2)Создайте объект-кортеж с 5 произвольными двоичными элементами. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
|
||||||
|
```py
|
||||||
|
>>> bin(4)
|
||||||
|
'0b100'
|
||||||
|
>>> bin(6)
|
||||||
|
'0b110'
|
||||||
|
>>> bin(7)
|
||||||
|
'0b111'
|
||||||
|
>>> bin(44)
|
||||||
|
'0b101100'
|
||||||
|
>>> bin(99)
|
||||||
|
'0b1100011'
|
||||||
|
>>> k=(0b100, 0b110, 0b111, 0b101100,0b1100011)
|
||||||
|
>>> type(k)
|
||||||
|
<class 'tuple'>
|
||||||
|
>>> dir(k)
|
||||||
|
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
|
||||||
|
|
||||||
|
```
|
||||||
|
## 3)Напишите инструкцию создания нового кортежа, в который включите два последних элемента ранее созданного кортежа, и два элемента - символы "a" и "b". Отобразите созданный объект на экране.
|
||||||
|
```py
|
||||||
|
>>> k1=k[-2:]+('a','b')
|
||||||
|
>>> k1
|
||||||
|
(44, 99, 'a', 'b')
|
||||||
|
```
|
||||||
|
## 4) Преобразуйте кортеж в список. Вставьте в качестве второго элемента списка значение "Автоматизированная система". Отобразите полученный объект.
|
||||||
|
```py
|
||||||
|
>>> spisok=list(k1)
|
||||||
|
>>> spisok.insert(1, 'Автоматизированная система')
|
||||||
|
>>> spisok
|
||||||
|
[44, 'Автоматизированная система', 99, 'a', 'b']
|
||||||
|
```
|
||||||
|
## 5) Напишите инструкции, обеспечивающие подсчет суммы числовых элементов кортежа. С использованием формата отобразите результат по шаблону: "Сумма элементов=:".
|
||||||
|
```py
|
||||||
|
>>> sum_rez=0
|
||||||
|
>>> for element in k1:
|
||||||
|
... if type(element)==int:
|
||||||
|
... sum_rez += element
|
||||||
|
...
|
||||||
|
>>> sum_rez
|
||||||
|
143
|
||||||
|
>>> s="Сумма элементов=:"+str(sum_rez)
|
||||||
|
>>> s
|
||||||
|
'Сумма элементов=:143'
|
||||||
|
```
|
||||||
813
TEMA3/lab3.md
Обычный файл
813
TEMA3/lab3.md
Обычный файл
@@ -0,0 +1,813 @@
|
|||||||
|
# Отчет
|
||||||
|
## Тема 3.
|
||||||
|
Операции с объектами
|
||||||
|
## Пункт 2.
|
||||||
|
Преобразование простых базисов типов объектов
|
||||||
|
## 2.1 Преобразование в логический тип с помощью функции bool(<Объект>)
|
||||||
|
```py
|
||||||
|
>>>logiz1=bool(56)
|
||||||
|
>>>logiz1
|
||||||
|
True
|
||||||
|
>>>logiz2=bool(0)
|
||||||
|
>>>logiz2
|
||||||
|
False
|
||||||
|
>>>logiz3=bool("Beta")
|
||||||
|
>>>logiz3
|
||||||
|
True
|
||||||
|
>>>logiz4=bool("")
|
||||||
|
>>>logiz4
|
||||||
|
False
|
||||||
|
```
|
||||||
|
## 2.2 Преобразование в целое десятичное число
|
||||||
|
```py
|
||||||
|
>>>tt1= int(198.6)
|
||||||
|
>>>tt1
|
||||||
|
198
|
||||||
|
>>>tt2=int('-76')
|
||||||
|
>>>tt2
|
||||||
|
-76
|
||||||
|
>>>tt3= int('B',16)
|
||||||
|
>>>tt3
|
||||||
|
11
|
||||||
|
>>>tt4=int("71",8)
|
||||||
|
>>>tt4
|
||||||
|
57
|
||||||
|
>>> tt5=int("98.76")
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#34>", line 1, in <module>
|
||||||
|
tt5=int("98.76")
|
||||||
|
ValueError: invalid literal for int() with base 10: '98.76'
|
||||||
|
```
|
||||||
|
Функция int() может преобразовывать в целое число только строки, которые содержат целое число (например, "98"). Строка "98.76" содержит десятичную точку, поэтому возникает ошибка.
|
||||||
|
Решить эту проблему можно так:
|
||||||
|
```py
|
||||||
|
>>>tt5 = int(float("98.76"))
|
||||||
|
>>>tt5
|
||||||
|
98
|
||||||
|
```
|
||||||
|
## 2.3 Преобразование десятичных чисел в другие системы счисления
|
||||||
|
```py
|
||||||
|
>>>hh=123
|
||||||
|
>>>dv1=bin(hh) #в двоичную сс
|
||||||
|
>>>dv1
|
||||||
|
'0b1111011'
|
||||||
|
>>>vos1=oct(hh) #в восьмеричную сс
|
||||||
|
>>>vos1
|
||||||
|
'0o173'
|
||||||
|
>>>shs1=hex(hh) #в шеснадцатеричную сс
|
||||||
|
>>>shs1
|
||||||
|
'0x7b'
|
||||||
|
```
|
||||||
|
Для проверки выполним обратные преобразования
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>int (dv1,2)
|
||||||
|
123
|
||||||
|
>>int(vos1,8)
|
||||||
|
123
|
||||||
|
>>int(shs1,16)
|
||||||
|
123
|
||||||
|
```
|
||||||
|
## Пункт 3.
|
||||||
|
Преобразование более сложных базовых типов объектов
|
||||||
|
## 3.1 Преобразование в строку символов с помощью функции str(<Объект>)
|
||||||
|
```py
|
||||||
|
>>>strk=str(23.6)
|
||||||
|
>>>strk
|
||||||
|
'23.6'
|
||||||
|
>>>strk2=str(logiz3)
|
||||||
|
>>>strk2
|
||||||
|
'True'
|
||||||
|
>>>strk3=str(["A","B","C"]) #Преобразуем список
|
||||||
|
>>>strk3
|
||||||
|
"['A', 'B', 'C']"
|
||||||
|
>>>strk4=str(("A","B","C")) #Преобразуем кортеж
|
||||||
|
>>>strk4
|
||||||
|
"('A', 'B', 'C')"
|
||||||
|
>>>strk5=str({"A":1,"B":2,"C":9}) #Преобразуем словарь
|
||||||
|
>>>strk5
|
||||||
|
"{'A': 1, 'B': 2, 'C': 9}"
|
||||||
|
```
|
||||||
|
## 3.2 Преобразование элементов объекта в список с помощью функции list(<Объект>)
|
||||||
|
```py
|
||||||
|
>>>spis1=list("Строка символов") #Заданная строка разделяется на символы
|
||||||
|
>>>spis1
|
||||||
|
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
|
||||||
|
>>>spis2=list((124,236,-15,908)) #Кортеж превращается в список
|
||||||
|
>>>spis2
|
||||||
|
[124, 236, -15, 908]
|
||||||
|
>>>spis3=list({"A":1,"B":2,"C":9}) #Преобразование словаря в список
|
||||||
|
>>>spis3
|
||||||
|
['A', 'B', 'C']
|
||||||
|
>>> spis4 = list({"A":1,"B":2,"C":9}.values())
|
||||||
|
>>> spis4
|
||||||
|
[1, 2, 9]
|
||||||
|
```
|
||||||
|
## 3.3 Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>)
|
||||||
|
```py
|
||||||
|
>>>kort7=tuple('Строка символов') #Преобразование строки символов в кортеж
|
||||||
|
>>>kort7
|
||||||
|
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
|
||||||
|
|
||||||
|
>>>kort8=tuple(spis2) #Преобразование списка в кортеж
|
||||||
|
>>>kort8
|
||||||
|
(124, 236, -15, 908)
|
||||||
|
>>>kort9=tuple({"A":1,"B":2,"C":9}) #Преобразование словаря в кортеж
|
||||||
|
>>>kort9
|
||||||
|
('A', 'B', 'C')
|
||||||
|
>>> kort9 = tuple(({"A":1,"B":2,"C":9}.values()))
|
||||||
|
>>> kort9
|
||||||
|
(1, 2, 9)
|
||||||
|
```
|
||||||
|
## 3.4. Удаление объектов
|
||||||
|
```py
|
||||||
|
>>>del strk5, kort8
|
||||||
|
Проверим
|
||||||
|
>>>dir()
|
||||||
|
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'dv1', 'hh', 'kort7', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'shs1', 'spis1', 'spis2', 'spis3', 'spis4', 'strk', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'tt5', 'vos1']
|
||||||
|
```
|
||||||
|
Создадим строку со своей фамилией и инициалами, преобразуем её в список, затем список – в кортеж и, наконец, кортеж – в строку.
|
||||||
|
```py
|
||||||
|
>>> f= 'ЦветковаТА'
|
||||||
|
>>> spis= list(f)
|
||||||
|
>>> spis
|
||||||
|
['Ц', 'в', 'е', 'т', 'к', 'о', 'в', 'а', 'Т', 'А']
|
||||||
|
>>> k=tuple(spis)
|
||||||
|
>>> k
|
||||||
|
('Ц', 'в', 'е', 'т', 'к', 'о', 'в', 'а', 'Т', 'А')
|
||||||
|
>>> kk=str(k)
|
||||||
|
>>> kk
|
||||||
|
"('Ц', 'в', 'е', 'т', 'к', 'о', 'в', 'а', 'Т', 'А')"
|
||||||
|
>>> sttr = ''.join(k)
|
||||||
|
>>> sttr
|
||||||
|
'ЦветковаТА'
|
||||||
|
```
|
||||||
|
## Пункт 4. Арифметические операции.
|
||||||
|
## 4.1. Сложение и вычитание (+ и -)
|
||||||
|
```py
|
||||||
|
>>> 12+7+90
|
||||||
|
109
|
||||||
|
>>> 5.689e-1 - 0.456
|
||||||
|
0.11289999999999994
|
||||||
|
>>> 23.6+54
|
||||||
|
77.6
|
||||||
|
>>> 14-56.7+89
|
||||||
|
46.3
|
||||||
|
```
|
||||||
|
## 4.2. Умножение (*)
|
||||||
|
```py
|
||||||
|
>>> -6.7*12
|
||||||
|
-80.4
|
||||||
|
```
|
||||||
|
## 4.3. Деление (/). Результатом деления всегда будет вещественное число!
|
||||||
|
```py
|
||||||
|
>>> -234.5/6
|
||||||
|
-39.083333333333336
|
||||||
|
>>> a=178/45
|
||||||
|
>>> a
|
||||||
|
3.9555555555555557
|
||||||
|
>>> type(a)
|
||||||
|
<class 'float'>
|
||||||
|
```
|
||||||
|
## 4.4. Деление с округлением вниз (//). Здесь результат может быть целым или вещественным.
|
||||||
|
```py
|
||||||
|
>>> b=178//45
|
||||||
|
>>> b
|
||||||
|
3
|
||||||
|
>>> type(b)
|
||||||
|
<class 'int'>
|
||||||
|
>>> c=-24.6//12.1
|
||||||
|
>>> c
|
||||||
|
-3.0
|
||||||
|
>>> type(c)
|
||||||
|
<class 'float'>
|
||||||
|
```
|
||||||
|
## 4.5. Получение остатка от деления (%).
|
||||||
|
```py
|
||||||
|
>>> 148%33
|
||||||
|
16
|
||||||
|
>>> 12.6%3.8
|
||||||
|
1.2000000000000002
|
||||||
|
>>> 56.97%6
|
||||||
|
2.969999999999999
|
||||||
|
```
|
||||||
|
## 4.6. Возведение в степень (**).
|
||||||
|
```py
|
||||||
|
>>> 14**3
|
||||||
|
2744
|
||||||
|
>>> e=2.7**3.6
|
||||||
|
>>> e
|
||||||
|
35.719843790663525
|
||||||
|
>>> d=2.7**3
|
||||||
|
>>> d
|
||||||
|
19.683000000000003
|
||||||
|
```
|
||||||
|
Попробуем проделать арифметические операции над комплексными числами. Создадим два
|
||||||
|
комплексных числа
|
||||||
|
```py
|
||||||
|
>>> k1=(2+1j)
|
||||||
|
>>> k2=(1+2j)
|
||||||
|
>>> k1+k2
|
||||||
|
(3+3j)
|
||||||
|
>>> k2-k1
|
||||||
|
(-1+1j)
|
||||||
|
>>> k1*k2
|
||||||
|
5j
|
||||||
|
>>> k1/k2
|
||||||
|
(0.8-0.6j)
|
||||||
|
>>> k1**k2
|
||||||
|
(-0.42589434775182566+0.7753703444218832j)
|
||||||
|
>>> k1//k2
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
|
||||||
|
>>>k1//2
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#115>", line 1, in <module>
|
||||||
|
k1//2
|
||||||
|
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
|
||||||
|
>>> k1%k2
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
|
||||||
|
>>>k1%2
|
||||||
|
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
|
||||||
|
|
||||||
|
```
|
||||||
|
## Пункт 5. Операции с двоичными представлениями целых чисел.
|
||||||
|
|
||||||
|
## 5.1 Двоичная инверсия (~). Значение каждого бита в представлении числа заменяется на противоположное значение (0 на 1, 1 на 0)
|
||||||
|
```py
|
||||||
|
>>> dv1=9
|
||||||
|
>>> dv2=~dv1
|
||||||
|
>>> dv2
|
||||||
|
-10
|
||||||
|
```
|
||||||
|
## 5.2 Двоичное «И» (&) – побитовое совпадение двоичных представлений чисел
|
||||||
|
```py
|
||||||
|
>>> 7&9
|
||||||
|
1
|
||||||
|
>>> 7&8
|
||||||
|
0
|
||||||
|
```
|
||||||
|
Проверим
|
||||||
|
```py
|
||||||
|
>>> bin(7)
|
||||||
|
'0b111'
|
||||||
|
>>> bin(9)
|
||||||
|
'0b1001'
|
||||||
|
>>> bin(7&9)
|
||||||
|
'0b1'
|
||||||
|
```
|
||||||
|
## 5.3 Двоичное «ИЛИ» (|) – побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда равны 0
|
||||||
|
```py
|
||||||
|
>>> 7|9 # 0111 или 1001 = 1111
|
||||||
|
15
|
||||||
|
>>> 7|8 # 0111 или 1000 = 1111
|
||||||
|
|
||||||
|
15
|
||||||
|
>>> 14|5 # 1110 или 0101 = 1111
|
||||||
|
15
|
||||||
|
>>> bin(15)
|
||||||
|
'0b1111'
|
||||||
|
```
|
||||||
|
## 5.4. Двоичное «исключающее ИЛИ»(^) - побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда имеют одинаковые значения – оба 0 или оба 1.
|
||||||
|
```py
|
||||||
|
>>> 14^5 #1110 ^ 0101 = 1011
|
||||||
|
11
|
||||||
|
>>> bin(11)
|
||||||
|
'0b1011'
|
||||||
|
>>> bin(14)
|
||||||
|
'0b1110'
|
||||||
|
>>> bin(5)
|
||||||
|
'0b101'
|
||||||
|
```
|
||||||
|
## 5.5 Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева.
|
||||||
|
```py
|
||||||
|
>>> h=14
|
||||||
|
>>> bin(14)
|
||||||
|
'0b1110'
|
||||||
|
>>> g=h<<2
|
||||||
|
>>> bin(g)
|
||||||
|
'0b111000'
|
||||||
|
>>> g1=h>>1
|
||||||
|
>>> bin(g1)
|
||||||
|
'0b111'
|
||||||
|
>>> g2=h>>2
|
||||||
|
>>> bin(g2)
|
||||||
|
'0b11'
|
||||||
|
```
|
||||||
|
Придумайте два двоичных числа, не менее чем с 7 знаками, и попробуйте выполнить с ними разные операции.
|
||||||
|
```py
|
||||||
|
>>> bin(76)
|
||||||
|
'0b1001100'
|
||||||
|
>>> bin(112)
|
||||||
|
'0b1110000'
|
||||||
|
>>> 76&112
|
||||||
|
64
|
||||||
|
>>> bin(64)
|
||||||
|
'0b1000000'
|
||||||
|
>>> 76|112
|
||||||
|
124
|
||||||
|
>>> bin(124)
|
||||||
|
'0b1111100'
|
||||||
|
>>> 76^112
|
||||||
|
60
|
||||||
|
>>> g=76<<2
|
||||||
|
>>> g
|
||||||
|
304
|
||||||
|
>>> bin(g)
|
||||||
|
'0b100110000'
|
||||||
|
```
|
||||||
|
## 6. Операции при работе с последовательностями (строками, списками, кортежами).
|
||||||
|
## 6.1. Объединение последовательностей (конкатенация)(+)
|
||||||
|
```py
|
||||||
|
>>>'Система '+'регулирования' #Соединение двух строк символов
|
||||||
|
'Система регулирования'
|
||||||
|
>>>['abc','de','fg']+['hi','jkl'] # Объединение двух списков
|
||||||
|
['abc', 'de', 'fg', 'hi', 'jkl']
|
||||||
|
>>>('abc','de','fg')+('hi','jkl') # Объединение двух кортежей
|
||||||
|
('abc', 'de', 'fg', 'hi', 'jkl')
|
||||||
|
```
|
||||||
|
## 6.2 Повторение (*)
|
||||||
|
```py
|
||||||
|
>>> 'ля-'*5
|
||||||
|
'ля-ля-ля-ля-ля-'
|
||||||
|
>>> ['ку','-']*3
|
||||||
|
['ку', '-', 'ку', '-', 'ку', '-']
|
||||||
|
|
||||||
|
>>> ('кис','-')*4
|
||||||
|
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
|
||||||
|
>>> signal1=[0]*3+[1]*99
|
||||||
|
>>> signal1
|
||||||
|
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||||
|
>>> signal2=(0,)*3+(1,)*5+(0,)*7
|
||||||
|
>>> signal2
|
||||||
|
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
```
|
||||||
|
## 6.3. Проверка наличия заданного элемента в последовательности (in)
|
||||||
|
```py
|
||||||
|
>>> stroka='Система автоматического управления'
|
||||||
|
>>> 'автомат' in stroka
|
||||||
|
True
|
||||||
|
>>> 'ку' in ['ку','-']*3
|
||||||
|
True
|
||||||
|
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
|
||||||
|
False
|
||||||
|
```
|
||||||
|
## 6.4. Подстановка значений в строку с помощью оператора «%»
|
||||||
|
```py
|
||||||
|
>>> stroka='Температура=%g %s %g'
|
||||||
|
>>> stroka
|
||||||
|
'Температура=%g %s %g'
|
||||||
|
>>> stroka % (16,' меньше ',25)
|
||||||
|
'Температура=16 меньше 25'
|
||||||
|
>>> stroka % (66,' меньше ',77)
|
||||||
|
'Температура=66 меньше 77'
|
||||||
|
>>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
|
||||||
|
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
|
||||||
|
'Температура = 16 меньше 25'
|
||||||
|
```
|
||||||
|
## 7. Оператор присваивания
|
||||||
|
## 7.1. Обычное присваивание значения переменной (=)
|
||||||
|
```py
|
||||||
|
>>> zz=-12
|
||||||
|
```
|
||||||
|
## 7.2. Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
|
||||||
|
```py
|
||||||
|
>>> zz+=5
|
||||||
|
>>> zz
|
||||||
|
-7
|
||||||
|
>>> zz-=3
|
||||||
|
>>> zz
|
||||||
|
-10
|
||||||
|
>>> stroka='Система'
|
||||||
|
>>> stroka+=' регулирования'
|
||||||
|
>>> stroka
|
||||||
|
'Система регулирования'
|
||||||
|
```
|
||||||
|
## 7.3. Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
|
||||||
|
```py
|
||||||
|
>>> zz/=2
|
||||||
|
>>> zz
|
||||||
|
-5.0
|
||||||
|
>>> zz*=5
|
||||||
|
>>> zz
|
||||||
|
-25.0
|
||||||
|
```
|
||||||
|
## 7.4. Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=)
|
||||||
|
```py
|
||||||
|
>>> zz//=2
|
||||||
|
>>> zz
|
||||||
|
-13.0
|
||||||
|
>>> zz**=2
|
||||||
|
>>> zz
|
||||||
|
169.0
|
||||||
|
>>> zz%=5
|
||||||
|
>>> zz
|
||||||
|
4.0
|
||||||
|
```
|
||||||
|
## 7.5. Множественное присваивание
|
||||||
|
Присваивание одного значения нескольким переменным
|
||||||
|
```py
|
||||||
|
>>> w=v=10
|
||||||
|
>>> w
|
||||||
|
10
|
||||||
|
>>> v
|
||||||
|
10
|
||||||
|
```
|
||||||
|
Присваивание кортежа
|
||||||
|
```py
|
||||||
|
>>> n1,n2,n3=(11,-3,'all')
|
||||||
|
>>> n1,n2,n3
|
||||||
|
(11, -3, 'all')
|
||||||
|
```
|
||||||
|
Присваивание списка
|
||||||
|
```py
|
||||||
|
>>> a1,a2,a3=[1,2,3]
|
||||||
|
>>> a1,a2,a3
|
||||||
|
(1, 2, 3)
|
||||||
|
```
|
||||||
|
Присваивание словаря
|
||||||
|
```py
|
||||||
|
>>> s1,s2,s3={'один':1,'два':2,'три':3}
|
||||||
|
>>> s1,s2,s3
|
||||||
|
('один', 'два', 'три')
|
||||||
|
```
|
||||||
|
Если необходимо присвоить значения, то это можно сделать через .values()
|
||||||
|
```py
|
||||||
|
>>> s1,s2,s3={'один':1,'два':2,'три':3}.values()
|
||||||
|
>>> s1,s2,s3
|
||||||
|
(1, 2, 3)
|
||||||
|
```
|
||||||
|
Если необходимо присвоить ключи и значения, то это можно сделать через .items()
|
||||||
|
```py
|
||||||
|
>>> f1,f2,f3={'один':1,'два':2,'три':3}.items()
|
||||||
|
>>> f1,f2,f3
|
||||||
|
(('один', 1), ('два', 2), ('три', 3))
|
||||||
|
>>> f1
|
||||||
|
('один', 1)
|
||||||
|
>>> f2
|
||||||
|
('два', 2)
|
||||||
|
>>> f3
|
||||||
|
('три', 3)
|
||||||
|
```
|
||||||
|
Присваивание множества
|
||||||
|
```py
|
||||||
|
>>> m1,m2,m3={0,89,6}
|
||||||
|
>>> m1,m2,m3
|
||||||
|
(0, 89, 6)
|
||||||
|
```
|
||||||
|
Присваивание строки
|
||||||
|
```py
|
||||||
|
>>> c1,c2,c3='1','2','3'
|
||||||
|
>>> c1,c2,c3
|
||||||
|
('1', '2', '3')
|
||||||
|
```
|
||||||
|
## 8. Логические операции (True или False)
|
||||||
|
## 8.1. Операции сравнение
|
||||||
|
```py
|
||||||
|
>>> v==w
|
||||||
|
True
|
||||||
|
>>> v!=w
|
||||||
|
False
|
||||||
|
>>> v>w
|
||||||
|
False
|
||||||
|
>>> v<w
|
||||||
|
False
|
||||||
|
>>> v>=w
|
||||||
|
True
|
||||||
|
>>> v<=w
|
||||||
|
True
|
||||||
|
>>> 5==4
|
||||||
|
False
|
||||||
|
>>> 5!=4
|
||||||
|
True
|
||||||
|
>>> 5>4
|
||||||
|
True
|
||||||
|
>>> 5<4
|
||||||
|
False
|
||||||
|
>>> 5>=4
|
||||||
|
True
|
||||||
|
>>> 5<=4
|
||||||
|
False
|
||||||
|
```
|
||||||
|
## 8.2. Проверка наличия заданного элемента в последовательности или во множестве, а также про-верка наличия ключа в словаре (in).
|
||||||
|
Операции с множеством
|
||||||
|
```py
|
||||||
|
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
|
||||||
|
>>> 'book' in mnoz1
|
||||||
|
True
|
||||||
|
>>> 'cap' in mnoz1
|
||||||
|
False
|
||||||
|
```
|
||||||
|
Операции со словарем
|
||||||
|
```py
|
||||||
|
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
|
||||||
|
>>> 'Vologda' in dic1
|
||||||
|
True
|
||||||
|
>>> 'Pskov' in dic1
|
||||||
|
False
|
||||||
|
>>> 56 in dic1.values()
|
||||||
|
True
|
||||||
|
```
|
||||||
|
Ещё пример работы со словарем:
|
||||||
|
```py
|
||||||
|
>>> dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
|
||||||
|
>>> 'UII' in dct1['Depart']
|
||||||
|
True
|
||||||
|
>>> dct1['Depart'][1] == 'MM'
|
||||||
|
False
|
||||||
|
```
|
||||||
|
## 8.3. Создание больших логических выражений с использованием соединительных слов: логиче-ское «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not).
|
||||||
|
```py
|
||||||
|
>>> a=17
|
||||||
|
>>> b=-6
|
||||||
|
>>> (a>=b)and('book' in mnoz1)and not('Pskov' in dic1 )
|
||||||
|
True
|
||||||
|
>>> (5==4)or(a==17)
|
||||||
|
True
|
||||||
|
>>> (5==4)and(a==17)
|
||||||
|
False
|
||||||
|
>>> ((5==4)and(a==17))or(not(5==4)and(a==17))
|
||||||
|
True
|
||||||
|
```
|
||||||
|
## 8.4. Проверка ссылок переменных на один и тот же объект (is).
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> w=v=10
|
||||||
|
>>> w1=['A','B']
|
||||||
|
>>> v1=['A','B']
|
||||||
|
>>> w1==v2
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
NameError: name 'v2' is not defined. Did you mean: 'v'?
|
||||||
|
>>> w1==v1
|
||||||
|
True
|
||||||
|
>>> w1 is v1
|
||||||
|
False
|
||||||
|
>>> w is v
|
||||||
|
True
|
||||||
|
```
|
||||||
|
Оператор is сравнивает адреса объектов в памяти. Целые числа из одной строки хранятся по одному адресу, поэтому is возвращает True. Словари же, созданные отдельно, размещаются в разных местах памяти, и is для них дает False.
|
||||||
|
## Пункт 9. Операции с объектами, выполняемые с помощью методов.
|
||||||
|
Полный список всех атрибутов любого объекта можно получить с использованием функции dir, например,
|
||||||
|
```py
|
||||||
|
>>> stroka='Микропроцессорная система управления'
|
||||||
|
>>> dir(stroka)
|
||||||
|
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
|
||||||
|
```
|
||||||
|
## 9.1. Методы для работы со строками
|
||||||
|
```py
|
||||||
|
>>> stroka.find('пр') #Возвращает номер позиции первого вхождения указанного контекста или значение -1
|
||||||
|
5
|
||||||
|
>>> stroka.count("с") #Подсчет числа вхождений строки "с" в stroka
|
||||||
|
4
|
||||||
|
>>> stroka.replace(' у',' автоматического у')
|
||||||
|
'Микропроцессорная система автоматического управления'
|
||||||
|
>>> spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит за-данный разделитель
|
||||||
|
>>> spis22
|
||||||
|
['Микропроцессорная', 'система', 'управления']
|
||||||
|
>>> stroka.upper() #Возвращает строку со всеми заглавными буквами
|
||||||
|
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
|
||||||
|
>>> stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка
|
||||||
|
>>> stroka3
|
||||||
|
'Микропроцессорная система управления'
|
||||||
|
>>> stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева
|
||||||
|
('Микропроце', 'с', 'сорная система управления')
|
||||||
|
>>> stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа
|
||||||
|
('Микропроцессорная си', 'с', 'тема управления')
|
||||||
|
```
|
||||||
|
## Mетод format
|
||||||
|
Форматирование строки осуществляется в случае, если необходимо в символьную строку подставить значения некоторых объектов, например, полученных в ходе выполнения программы. Часто такую строку затем используют для вывода результатов работы программы на экран или в файл протокола.
|
||||||
|
```py
|
||||||
|
>>> strk1='Момент времени {}, значение = {}'
|
||||||
|
>>> strk1
|
||||||
|
'Момент времени {}, значение = {}'
|
||||||
|
>>> strk1.format(1,89.7)
|
||||||
|
'Момент времени 1, значение = 89.7'
|
||||||
|
>>> strk2='Момент времени {1}, значение = {0}:{2}'
|
||||||
|
```
|
||||||
|
Здесь цифры в фигурных скобках – это индексы, определяющие порядок использования аргумен-тов формата. Поэтому такой способ называют основанным на позиционных аргументах. Например,
|
||||||
|
```py
|
||||||
|
>>> strk2.format(36.7,2,'норма!')
|
||||||
|
'Момент времени 2, значение = 36.7:норма!'
|
||||||
|
>>> strk3='Момент времени {num}, значение = {znch}'
|
||||||
|
```
|
||||||
|
Здесь в скобках указаны имена аргументов – вставок. Поэтому такой способ основан на имено-ванных аргументах.
|
||||||
|
```py
|
||||||
|
>>> strk3.format(znch=89.7,num=2)
|
||||||
|
'Момент времени 2, значение = 89.7'
|
||||||
|
```
|
||||||
|
## 9.2. Методы для работы со списками.
|
||||||
|
```py
|
||||||
|
>>> spsk = [1, (2, 3), 'hello Sergey Alexandrovich', 3.14 , 'pi']
|
||||||
|
>>> spsk.pop(2) #Удаление элемента по индексу
|
||||||
|
'hello Sergey Alexandrovich'
|
||||||
|
>>> spsk.append('c') #Вставка элемента в конец
|
||||||
|
>>> spsk
|
||||||
|
[1, (2, 3), 3.14, 'pi', 'c']
|
||||||
|
>>> spsk.insert(2,'a') #Вставка элемента в конкретное место по индексу
|
||||||
|
>>> spsk
|
||||||
|
[1, (2, 3), 'a', 3.14, 'pi', 'c']
|
||||||
|
>>> spsk.count('a') #Подсчет количества элементов по значению
|
||||||
|
1
|
||||||
|
## 9.3. Mетоды кортежей
|
||||||
|
У кортежей методов меньше, тк он являетя неизменяемым и методов на добавление/удаление объекта - нет
|
||||||
|
```py
|
||||||
|
>>> km2=(5,'пять', 5.55, 'мопсикии',4+1j)
|
||||||
|
>>> km2.count(5)
|
||||||
|
1
|
||||||
|
>>> km2.index('мопсикии')
|
||||||
|
3
|
||||||
|
```
|
||||||
|
## 9.4 Методы словарей
|
||||||
|
```py
|
||||||
|
>>> d={'key1':1, 'key2':2,'key3':3,'key4':4}
|
||||||
|
Cоздание копии
|
||||||
|
```py
|
||||||
|
>>> d1=d.copy()
|
||||||
|
>>> d1
|
||||||
|
{'key1': 1, 'key2': 2, 'key3': 3, 'key4': 4}
|
||||||
|
```
|
||||||
|
Возвращение значения по ключу
|
||||||
|
```py
|
||||||
|
>>> d.get('key3')
|
||||||
|
3
|
||||||
|
```
|
||||||
|
Возвращение кортежей из пар ключ-значение
|
||||||
|
```py
|
||||||
|
>>> d.items()
|
||||||
|
dict_items([('key1', 1), ('key2', 2), ('key3', 3), ('key4', 4)])
|
||||||
|
```
|
||||||
|
Возвращение объекта только из ключей
|
||||||
|
```py
|
||||||
|
>>> d.keys()
|
||||||
|
dict_keys(['key1', 'key2', 'key3', 'key4'])
|
||||||
|
```
|
||||||
|
Возвращение объекта только из значений
|
||||||
|
```py
|
||||||
|
>>> d.values()
|
||||||
|
dict_values([1, 2, 3, 4])
|
||||||
|
```
|
||||||
|
Добавление ключ-значения
|
||||||
|
```py
|
||||||
|
>>> d['key5']=5
|
||||||
|
>>> d
|
||||||
|
{'key1': 1, 'key2': 2, 'key3': 3, 'key4': 4, 'key5': 5}
|
||||||
|
```
|
||||||
|
Удаление ключ-значения
|
||||||
|
```py
|
||||||
|
>>> d.pop('key1')
|
||||||
|
1
|
||||||
|
>>> d
|
||||||
|
{'key2': 2, 'key3': 3, 'key4': 4, 'key5': 5}
|
||||||
|
```
|
||||||
|
Очищение словаря
|
||||||
|
```py
|
||||||
|
>>> d.clear()
|
||||||
|
>>> d
|
||||||
|
{}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Методы множеств
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> mn={1,'dva',3.33}
|
||||||
|
```
|
||||||
|
Добавление элемента
|
||||||
|
```py
|
||||||
|
>>> mn.add(4)
|
||||||
|
>>> mn
|
||||||
|
{1, 3.33, 4, 'dva'}
|
||||||
|
```
|
||||||
|
Создание копии
|
||||||
|
```py
|
||||||
|
>>> cop=mn.copy()
|
||||||
|
>>> cop
|
||||||
|
{1, 3.33, 4, 'dva'}
|
||||||
|
```
|
||||||
|
Удаление элемента по значению
|
||||||
|
```py
|
||||||
|
>>> mn.remove(1)
|
||||||
|
>>> mn
|
||||||
|
{3.33, 4, 'dva'}
|
||||||
|
```
|
||||||
|
Удаление элемента по значению
|
||||||
|
```py
|
||||||
|
>>> mn.discard('dva')
|
||||||
|
>>> mn
|
||||||
|
{3.33, 4}
|
||||||
|
```
|
||||||
|
Очищение множества
|
||||||
|
```py
|
||||||
|
>>> mn.clear()
|
||||||
|
>>> mn
|
||||||
|
set()
|
||||||
|
```
|
||||||
|
Удаление и возвращение случайного элемента из множества
|
||||||
|
```py
|
||||||
|
>>> cop.pop()
|
||||||
|
1
|
||||||
|
>>> cop
|
||||||
|
{3.33, 4, 'dva'}
|
||||||
|
```
|
||||||
|
Добавление элементов
|
||||||
|
```py
|
||||||
|
>>> cop.update({False,'t'})
|
||||||
|
>>> cop
|
||||||
|
{False, 3.33, 4, 't', 'dva'}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Общее контрольное задание
|
||||||
|
Преобразовать восьмеричное значение 45 в целое число.
|
||||||
|
```py
|
||||||
|
|
||||||
|
>>> octv = '45'
|
||||||
|
>>> decv = int(octv, 8)
|
||||||
|
>>> decv
|
||||||
|
37
|
||||||
|
```
|
||||||
|
Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12,
|
||||||
|
"постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и
|
||||||
|
значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж
|
||||||
|
от списка?
|
||||||
|
```py
|
||||||
|
>>> D = {"усиление": 23, "запаздывание": 12, "постоянная времени": 78}
|
||||||
|
>>> keyD = list(D.keys())
|
||||||
|
>>> keyD
|
||||||
|
['усиление', 'запаздывание', 'постоянная времени']
|
||||||
|
>>> valD = list(D.values())
|
||||||
|
>>> valD
|
||||||
|
[23, 12, 78]
|
||||||
|
>>> tupD = (keyD, valD)
|
||||||
|
>>> tupD
|
||||||
|
(['усиление', 'запаздывание', 'постоянная времени'], [23, 12, 78])
|
||||||
|
|
||||||
|
```
|
||||||
|
Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с
|
||||||
|
округлением вниз, с определением после этого остатка от деления получившегося значения
|
||||||
|
на 3 и затем возведения результата в степень 2.4.
|
||||||
|
```py
|
||||||
|
>>> ((1768 // 24.8) % 3) ** 2.4
|
||||||
|
5.278031643091577
|
||||||
|
```
|
||||||
|
Напишите и выполните единое выражение, последовательно осуществляющее следующие
|
||||||
|
операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее
|
||||||
|
ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
|
||||||
|
```py
|
||||||
|
>>> ((~(13 & 27)) ^ 14) << 2
|
||||||
|
-32
|
||||||
|
```
|
||||||
|
Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки
|
||||||
|
наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов
|
||||||
|
этого списка.
|
||||||
|
```py
|
||||||
|
>>> lst = ["колебат"] * 4
|
||||||
|
>>> lst[1] += lst[2]
|
||||||
|
>>> lst
|
||||||
|
['колебат', 'колебатколебат', 'колебат', 'колебат']
|
||||||
|
>>> lst.pop(2)
|
||||||
|
'колебат'
|
||||||
|
>>> lst
|
||||||
|
['колебат', 'колебатколебат', 'колебат']
|
||||||
|
>>> 'аткол' in lst[1]
|
||||||
|
True
|
||||||
|
```
|
||||||
|
Определить список методов, доступных у ранее созданного словаря D. Поочередно
|
||||||
|
использовать его методы keys и values, определить, что можно получить с применением
|
||||||
|
этих методов.
|
||||||
|
```py
|
||||||
|
>>> D
|
||||||
|
{'усиление': 23, 'запаздывание': 12, 'постоянная времени': 78}
|
||||||
|
>>> dir(D)
|
||||||
|
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__',
|
||||||
|
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
|
||||||
|
'__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__',
|
||||||
|
'__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__',
|
||||||
|
'__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__',
|
||||||
|
'__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items',
|
||||||
|
'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
|
||||||
|
>>> D.keys()
|
||||||
|
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
|
||||||
|
>>> D.values()
|
||||||
|
dict_values([23, 12, 78])
|
||||||
|
```
|
||||||
|
#dict_keys и dict_values особые объекты, которые ссылаются на элементы исходного словаря.
|
||||||
|
|
||||||
|
Создать объект - символьную строку с текстом данного предложения. Из символьной строки
|
||||||
|
создать список, элементами которого будут отдельные слова из созданной строки. Заменить в
|
||||||
|
списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить
|
||||||
|
получившийся список.
|
||||||
|
```py
|
||||||
|
>>> sen = "Создать объект - символьную строку с текстом данного предложения"
|
||||||
|
>>> senl = sen.split()
|
||||||
|
>>> senl
|
||||||
|
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||||
|
>>> senl[senl.index("-")] = ","
|
||||||
|
>>> senl
|
||||||
|
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||||
|
>>> senl.remove("данного")
|
||||||
|
>>> senl
|
||||||
|
['Создать', 'объект', ';', 'символьную', 'строку', 'с', 'текстом', 'предложения']
|
||||||
|
```
|
||||||
26
TEMA4/26.1.md
Обычный файл
26
TEMA4/26.1.md
Обычный файл
@@ -0,0 +1,26 @@
|
|||||||
|
26) Напишите инструкцию определения и запоминания в переменной текущего московского ка-лендарного времени. Создайте список с 40 элементами – числами от 3 с шагом 6. Создайте кортеж с 12 элементами - случайным подмножеством из элементов списка. Создайте новый кортеж с элементами из первого кортежа, упорядоченными по убыванию величина. Рассчитайте сумму элементов второго кортежа, начиная с 4-го от начала и до 8-го. Отобразите ре-зультат на экране в виде «Сумма элементов кортежа = ХХХ». Определите, сколько времени в секундах прошло с начала выполнения задания
|
||||||
|
```py
|
||||||
|
>>> import time #начальное время
|
||||||
|
>>> import random #начальное время для Москвы
|
||||||
|
>>> start_time = time.time()
|
||||||
|
>>> start_time
|
||||||
|
1760354973.1996331
|
||||||
|
>>> here = time.localtime()
|
||||||
|
>>> here
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=14, tm_min=29, tm_sec=44, tm_wday=0, tm_yday=286, tm_isdst=0)
|
||||||
|
>>> numbers_list = list(range(3, 3 + 40*6, 6)) #список с 40 элементами – числами от 3 с шагом 6
|
||||||
|
>>> numbers_list
|
||||||
|
[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99, 105, 111, 117, 123, 129, 135, 141, 147, 153, 159, 165, 171, 177, 183, 189, 195, 201, 207, 213, 219, 225, 231, 237]
|
||||||
|
>>> random_tuple = tuple(random.sample(numbers_list, 12)) #кортеж с 12 элементами - случайным подмножеством из элементов списка
|
||||||
|
>>> random_tuple
|
||||||
|
(189, 159, 153, 171, 219, 183, 201, 93, 237, 111, 165, 225)
|
||||||
|
>>> r_tuple=tuple(sorted(random_tuple, reverse=True)) #сортировка в обратном порядке в кортеж
|
||||||
|
>>> r_tuple
|
||||||
|
(237, 225, 219, 201, 189, 183, 171, 165, 159, 153, 111, 93)
|
||||||
|
>>> sum_elements = sum(r_tuple[3:8]) #суммa элементов второго кортежа
|
||||||
|
>>> sum_elements
|
||||||
|
909
|
||||||
|
>>> end_time = time.time()
|
||||||
|
>>> end_time
|
||||||
|
1760355380.4714587
|
||||||
|
```
|
||||||
30
TEMA4/26.md
Обычный файл
30
TEMA4/26.md
Обычный файл
@@ -0,0 +1,30 @@
|
|||||||
|
26. Напишите инструкцию определения и запоминания в переменной текущего московского ка-лендарного времени. Создайте список с 40 элементами – числами от 3 с шагом 6. Создайте кортеж с 12 элементами - случайным подмножеством из элементов списка. Создайте новый кортеж с элементами из первого кортежа, упорядоченными по убыванию величина. Рассчитайте сумму элементов второго кортежа, начиная с 4-го от начала и до 8-го. Отобразите ре-зультат на экране в виде «Сумма элементов кортежа = ХХХ». Определите, сколько времени в секундах прошло с начала выполнения задания.
|
||||||
|
импорт библиотек
|
||||||
|
```py
|
||||||
|
>>> import time
|
||||||
|
>>> import random
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>> start_time = time.time() #начальное время
|
||||||
|
>>> here = time.localtime() #начальное время для Москвы
|
||||||
|
>>> here
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=14, tm_min=12, tm_sec=58, tm_wday=0, tm_yday=286, tm_isdst=0)
|
||||||
|
>>> start_time
|
||||||
|
1760353951.7821183
|
||||||
|
>>> numbers_list = list(range(3, 3 + 40*6, 6)) #список с 40 элементами – числами от 3 с шагом 6
|
||||||
|
>>> numbers_list
|
||||||
|
[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99, 105, 111, 117, 123, 129, 135, 141, 147, 153, 159, 165, 171, 177, 183, 189, 195, 201, 207, 213, 219, 225, 231, 237]
|
||||||
|
>>> reverse_tuple = tuple(sorted(numbers_list, reverse=True)) #сортировка в обратном порядке в кортеж
|
||||||
|
>>> reverse_tuple
|
||||||
|
(237, 231, 225, 219, 213, 207, 201, 195, 189, 183, 177, 171, 165, 159, 153, 147, 141, 135, 129, 123, 117, 111, 105, 99, 93, 87, 81, 75, 69, 63, 57, 51, 45, 39, 33, 27, 21, 15, 9, 3)
|
||||||
|
>>> sum_elements = sum(sorted_kortezh[3:8])
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
NameError: name 'sorted_kortezh' is not defined
|
||||||
|
|
||||||
|
>>> sum_elements = sum(reverse_tuple[3:8]) #рассчитайте сумму элементов второго кортежа
|
||||||
|
>>> sum_elements
|
||||||
|
1035
|
||||||
|
>>> end_time = time.time() #финальное время
|
||||||
|
>>> end_time
|
||||||
|
1760354435.6719537
|
||||||
748
TEMA4/lab4.md
Обычный файл
748
TEMA4/lab4.md
Обычный файл
@@ -0,0 +1,748 @@
|
|||||||
|
### Отчет тема 4
|
||||||
|
## Пункт 2 Стандартные функции (модуль builtins, импортированный по умолчанию)
|
||||||
|
## Пункт 2.1
|
||||||
|
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.
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>> round(123.456,1)
|
||||||
|
123.5
|
||||||
|
>>> type(round(123.456,1))
|
||||||
|
<class 'float'>
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>> round(123.456,0)
|
||||||
|
123.0
|
||||||
|
>>> type(round(123.456,0))
|
||||||
|
<class 'float'>
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>> round(123.456)
|
||||||
|
123
|
||||||
|
>>> type(round(123.456))
|
||||||
|
<class 'int'>
|
||||||
|
```
|
||||||
|
Если ndigits не указан, функция возвращает округленное целое число.
|
||||||
|
Если указано, то число с плавающей точкой
|
||||||
|
|
||||||
|
## Пункт 2.2
|
||||||
|
Функция range создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1.
|
||||||
|
```py
|
||||||
|
>>> gg=range(76,123,9)
|
||||||
|
>>> gg
|
||||||
|
range(76, 123, 9)
|
||||||
|
>>> type(gg)
|
||||||
|
<class 'range'>
|
||||||
|
>>> list(gg)
|
||||||
|
[76, 85, 94, 103, 112, 121]
|
||||||
|
```
|
||||||
|
Можно и не задавать шаг
|
||||||
|
```py
|
||||||
|
>>> range(23)
|
||||||
|
range(0, 23)
|
||||||
|
>>> 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 – создание общего объекта, элементами которого являются кортежи, составленные из эле-ментов двух или более объектов-последовательностей
|
||||||
|
```py
|
||||||
|
>>> qq = ['Цветкова', 'Снегура','Зеленкина']
|
||||||
|
>>> ff=zip(gg,qq)
|
||||||
|
>>> ff
|
||||||
|
<zip object at 0x000001903C06A5C0>
|
||||||
|
>>> tuple(ff)
|
||||||
|
((76, 'Цветкова'), (85, 'Снегура'), (94, 'Зеленкина'))
|
||||||
|
>>> ff[0]
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: 'zip' object is not subscriptable
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>> ff[1]
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#34>", line 1, in <module>
|
||||||
|
ff[1]
|
||||||
|
TypeError: 'zip' object is not subscriptable
|
||||||
|
```
|
||||||
|
Объект класса zip неизменяемый.
|
||||||
|
|
||||||
|
## Пункт 2.4. Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки.
|
||||||
|
```py
|
||||||
|
>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
|
||||||
|
коэффициент усиления=5
|
||||||
|
>>> dan
|
||||||
|
-131.0
|
||||||
|
>>> fff
|
||||||
|
5.0
|
||||||
|
```
|
||||||
|
eval() — Это встроенная функция в Python, которая выполняет строку кода как программу.
|
||||||
|
Как работает:
|
||||||
|
1)Компилирует строку в байт-код
|
||||||
|
2)Выполняет этот байт-код в заданном контексте
|
||||||
|
## Пункт 2.5. Похожая на eval функция exec – чтение и выполнение объекта-аргумента функции. Этот объ-ект должен представлять собой строку символов с совокупностью инструкций на языке Python.
|
||||||
|
```py
|
||||||
|
>>> exec(input('введите инструкции:'))
|
||||||
|
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
|
||||||
|
>>> gg
|
||||||
|
221.456
|
||||||
|
Пояснение:
|
||||||
|
eval превращает текст в работающий код
|
||||||
|
exec может выполнять любой код, но не возвращает значение.
|
||||||
|
## Пункт 2.6. Самостоятельно изучите и попробуйте применить функции abs, pow, max, min, sum, divmod, len, map.
|
||||||
|
```py
|
||||||
|
Возведение модуля (abs)
|
||||||
|
```py
|
||||||
|
>>> abs(-5)
|
||||||
|
5
|
||||||
|
>>> abs(5+5j)
|
||||||
|
7.0710678118654755
|
||||||
|
>>> abs(4**(-10))
|
||||||
|
9.5367431640625e-07
|
||||||
|
>>> abs(-4**10)
|
||||||
|
1048576
|
||||||
|
>>> abs(-4**(-10))
|
||||||
|
9.5367431640625e-07
|
||||||
|
```
|
||||||
|
Возведение степени
|
||||||
|
```py
|
||||||
|
>>> pow(5,2)
|
||||||
|
25
|
||||||
|
>>> pow(-5,-2)
|
||||||
|
0.04
|
||||||
|
>>> pow(5,4,2)
|
||||||
|
1
|
||||||
|
>>> pow(5+5j,2)
|
||||||
|
50j
|
||||||
|
```
|
||||||
|
Максимальное значение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> max(2,5.8,7)
|
||||||
|
7
|
||||||
|
>>> max([4,0,-7])
|
||||||
|
4
|
||||||
|
>>> max({'a': 1, 'b': 2, 'c': 3}) #выбор большего происходит из ключей
|
||||||
|
'c'
|
||||||
|
>>> max(["ee", "eee", "eeeeeee"], key = len)
|
||||||
|
'eeeeeee'
|
||||||
|
>>> max("b", "B") #сравнивает коды символов в unicode
|
||||||
|
'b'
|
||||||
|
>>> max([34,5,6, "e", 5+2j])
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: '>' not supported between instances of 'str' and 'int'
|
||||||
|
```
|
||||||
|
Видно что с разными типами данных не работает
|
||||||
|
|
||||||
|
Минимальное значение
|
||||||
|
```py
|
||||||
|
>>> min(2,5.8,7)
|
||||||
|
2
|
||||||
|
>>> min(({'a': 1, 'b': 2, 'c': 3})) #по ключу
|
||||||
|
'a'
|
||||||
|
>>> min(-7,-6,abs(-8))
|
||||||
|
-7
|
||||||
|
```
|
||||||
|
Сумма элементов
|
||||||
|
```py
|
||||||
|
>>> sum([1,2,3,4])
|
||||||
|
10
|
||||||
|
>>> sum([1,2,3,4], -2)
|
||||||
|
8
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>> sum("bbbb", "аааа")
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: sum() can't sum strings [use ''.join(seq) instead]
|
||||||
|
>>> sum(5+5j,3)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: 'complex' object is not iterable
|
||||||
|
>>> sum(5+5j,5+5j)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: 'complex' object is not iterable
|
||||||
|
>>> sum(4.5,5)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: 'float' object is not iterable
|
||||||
|
>>> sum(4.5,4.5)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: 'float' object is not iterable
|
||||||
|
```
|
||||||
|
Возвращение кортежа из целой части и остатка от деления
|
||||||
|
```py
|
||||||
|
>>> help(divmod)
|
||||||
|
Help on built-in function divmod in module builtins:
|
||||||
|
divmod(x, y, /)
|
||||||
|
Return the tuple (x//y, x%y). Invariant: div*y + mod == x.
|
||||||
|
>>> divmod(20,3)
|
||||||
|
(6, 2) #20 // 3 = 6 (целая часть) 20 % 3 = 2 (остаток)
|
||||||
|
>>> divmod(20,-3)
|
||||||
|
(-7, -1) 20 ÷ (-3) = -6.666... округляем вниз -7 20 % -3 = 1
|
||||||
|
```
|
||||||
|
|
||||||
|
Длина объекта
|
||||||
|
```py
|
||||||
|
>>> len((1,2,2))
|
||||||
|
3
|
||||||
|
>>> len("aaaaaaaaaa")
|
||||||
|
10
|
||||||
|
>>> len(["aaaa","ddddddddddd"])
|
||||||
|
2
|
||||||
|
>>> len({'a': 1, 'b': 2, 'c': 3})
|
||||||
|
3
|
||||||
|
>>> len(12)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: object of type 'int' has no len()
|
||||||
|
```
|
||||||
|
Применение функции к каждому элементу коллекции
|
||||||
|
```py
|
||||||
|
>>> help(map)
|
||||||
|
Help on class map in module builtins:
|
||||||
|
class map(object)
|
||||||
|
| map(func, *iterables) --> map object
|
||||||
|
|
|
||||||
|
| Make an iterator that computes the function using arguments from
|
||||||
|
| each of the iterables. Stops when the shortest iterable is exhausted.
|
||||||
|
|
||||||
|
>>> map(int, ["1", "2"])
|
||||||
|
<map object at 0x000001903C2BB5E0>
|
||||||
|
>>> list(map(int, ["1", "2"]))
|
||||||
|
[1, 2]
|
||||||
|
```
|
||||||
|
Останавливается когда самая короткая коллекция заканчивается
|
||||||
|
"Лишние" элементы из более длинных коллекций игнорируются
|
||||||
|
|
||||||
|
## Пункт 3 Стандартный модуль math
|
||||||
|
```py
|
||||||
|
>>> 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
|
||||||
|
```
|
||||||
|
Нахождение синуса
|
||||||
|
```py
|
||||||
|
>>> 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/2)
|
||||||
|
1.0
|
||||||
|
>>> math.sin(0.96)
|
||||||
|
0.8191915683009983
|
||||||
|
```
|
||||||
|
Нахождение арккосинуса
|
||||||
|
```py
|
||||||
|
>>> math.acos(1)
|
||||||
|
0.0
|
||||||
|
>>> math.acos(-1)
|
||||||
|
3.141592653589793
|
||||||
|
>>> math.acos(-0.54)
|
||||||
|
2.1412334361948187
|
||||||
|
>>> math.acos(5) #больше 1 нельзя
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
ValueError: math domain error
|
||||||
|
```
|
||||||
|
Перевод из радиан в градусы
|
||||||
|
```py
|
||||||
|
>>> help(math.degrees)
|
||||||
|
Help on built-in function degrees in module math:
|
||||||
|
|
||||||
|
degrees(x, /)
|
||||||
|
Convert angle x from radians to degrees.
|
||||||
|
|
||||||
|
>>> math.radians(math.pi)
|
||||||
|
0.05483113556160755
|
||||||
|
|
||||||
|
>>> math.radians(360)
|
||||||
|
6.283185307179586
|
||||||
|
|
||||||
|
>>> math.radians(90)
|
||||||
|
1.5707963267948966
|
||||||
|
```
|
||||||
|
|
||||||
|
Число е в степени заданного
|
||||||
|
```py
|
||||||
|
>>> help(math.exp)
|
||||||
|
Help on built-in function exp in module math:
|
||||||
|
exp(x, /)
|
||||||
|
Return e raised to the power of x.
|
||||||
|
>>> math.exp(0)
|
||||||
|
1.0
|
||||||
|
>>> math.exp(1)
|
||||||
|
2.718281828459045
|
||||||
|
>>> math.exp(-5)
|
||||||
|
0.006737946999085467
|
||||||
|
>>> math.exp(1/2)
|
||||||
|
1.6487212707001282
|
||||||
|
```
|
||||||
|
Нахождение логарифма
|
||||||
|
```py
|
||||||
|
>>> 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(math.e)
|
||||||
|
1.0
|
||||||
|
>>> math.log(5)
|
||||||
|
1.6094379124341003
|
||||||
|
>>> math.log(25,5)
|
||||||
|
2.0
|
||||||
|
>>> math.log(-25,5) #с отрицательными числами не работает
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
ValueError: math domain error
|
||||||
|
>>> math.log(25,-5)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
ValueError: math domain error
|
||||||
|
```
|
||||||
|
Десятичный логарифм
|
||||||
|
```py
|
||||||
|
>>> math.log10(10)
|
||||||
|
1.0
|
||||||
|
>>> math.log10(0.01)
|
||||||
|
-2.0
|
||||||
|
```
|
||||||
|
Извлечение квадратного корня
|
||||||
|
```py
|
||||||
|
>>> math.sqrt(25)
|
||||||
|
5.0
|
||||||
|
>>> math.sqrt(26)
|
||||||
|
5.0990195135927845
|
||||||
|
>>> math.sqrt(26.7)
|
||||||
|
5.167204273105526
|
||||||
|
>>> math.sqrt(-25)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
ValueError: math domain error
|
||||||
|
>>> math.sqrt(26.7+7j)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: must be real number, not complex
|
||||||
|
```
|
||||||
|
Округление числа до ближайшего целого вверх
|
||||||
|
```py
|
||||||
|
>>> 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(1.2)
|
||||||
|
2
|
||||||
|
>>> math.ceil(9.99)
|
||||||
|
10
|
||||||
|
>>> math.ceil(-6.2)
|
||||||
|
-6
|
||||||
|
>>> math.ceil(-6.9)
|
||||||
|
-6
|
||||||
|
```
|
||||||
|
Округление вниз
|
||||||
|
```py
|
||||||
|
>>> math.floor(1.2)
|
||||||
|
1
|
||||||
|
>>> math.floor(9.99)
|
||||||
|
9
|
||||||
|
>>> math.floor(-6.2)
|
||||||
|
-7
|
||||||
|
>>> math.floor(-6.9)
|
||||||
|
-7
|
||||||
|
>>> math.floor(-6.9+5j)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: must be real number, not complex
|
||||||
|
```
|
||||||
|
Константа: число пи
|
||||||
|
```py
|
||||||
|
>>> math.pi
|
||||||
|
3.141592653589793
|
||||||
|
```
|
||||||
|
комбинированное использование
|
||||||
|
```py
|
||||||
|
>>> math.sin(2 * math.pi / 7 + math.exp(0.23))
|
||||||
|
0.8334902641414562
|
||||||
|
```
|
||||||
|
## Пункт 4 Модуль 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']
|
||||||
|
>>> cmath.sqrt(1.2-0.5j)
|
||||||
|
(1.118033988749895-0.22360679774997896j)
|
||||||
|
>>> cmath.phase(1-0.5j)
|
||||||
|
-0.4636476090008061
|
||||||
|
```
|
||||||
|
## Пункт 5 Модуль random для генерации псевдослучайных чисел и работы с ними
|
||||||
|
```py
|
||||||
|
>>> 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()
|
||||||
|
```
|
||||||
|
```py
|
||||||
|
>>> help(random.random)
|
||||||
|
Help on built-in function random:
|
||||||
|
|
||||||
|
random() method of random.Random instance
|
||||||
|
random() -> x in the interval [0, 1).
|
||||||
|
```
|
||||||
|
Случайное число от 0 до 1
|
||||||
|
```py
|
||||||
|
>>> random.random()
|
||||||
|
0.23002075073724337
|
||||||
|
>>> random.random()
|
||||||
|
0.535712008113208
|
||||||
|
>>> random.random()
|
||||||
|
0.4738049347613569
|
||||||
|
>>> help(random.uniform)
|
||||||
|
Help on method uniform in module random:
|
||||||
|
|
||||||
|
uniform(a, b) method of random.Random instance
|
||||||
|
Get a random number in the range [a, b) or [a, b] depending on rounding.
|
||||||
|
```
|
||||||
|
Равномерно распределенное случайное число
|
||||||
|
```py
|
||||||
|
>>> random.uniform(20,30)
|
||||||
|
22.41214721441803
|
||||||
|
```
|
||||||
|
Равномерное случайное целое
|
||||||
|
```py
|
||||||
|
>>> help(random.randint)
|
||||||
|
Help on method randint in module random:
|
||||||
|
|
||||||
|
randint(a, b) method of random.Random instance
|
||||||
|
Return random integer in range [a, b], including both end points.
|
||||||
|
|
||||||
|
>>> random.randint(20,30)
|
||||||
|
21
|
||||||
|
>>> random.randint(20,30)
|
||||||
|
27
|
||||||
|
```
|
||||||
|
Случайное из коллекции
|
||||||
|
```py
|
||||||
|
>>> 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([ъъъ, "уууууууe", 80, 7, 5+5j])
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
NameError: name 'ъъъ' is not defined
|
||||||
|
>>> random.choice(["ffff", "уууууууe", 80, 7, 5+5j])
|
||||||
|
80
|
||||||
|
>>> random.choice(["ffff", "уууууууe", 80, 7, 5+5j])
|
||||||
|
(5+5j)
|
||||||
|
```
|
||||||
|
|
||||||
|
Нормально распределенное случайное число
|
||||||
|
```py
|
||||||
|
>>> help(random.gauss)
|
||||||
|
Help on method gauss in module random:
|
||||||
|
|
||||||
|
gauss(mu=0.0, sigma=1.0) method of random.Random instance
|
||||||
|
Gaussian distribution.
|
||||||
|
|
||||||
|
mu is the mean, and sigma is the standard deviation. This is
|
||||||
|
slightly faster than the normalvariate() function.
|
||||||
|
|
||||||
|
Not thread-safe without a lock around calls.
|
||||||
|
|
||||||
|
>>> random.gauss(0,1)
|
||||||
|
-0.43812614222540897
|
||||||
|
>>> random.gauss(7,8)
|
||||||
|
11.287669776968896
|
||||||
|
```
|
||||||
|
Случайное подмножество
|
||||||
|
```py
|
||||||
|
>>> help(random.sample)
|
||||||
|
Help on method sample in module random:
|
||||||
|
|
||||||
|
sample(population, k, *, counts=None) method of random.Random instance
|
||||||
|
Chooses k unique random elements from a population sequence.
|
||||||
|
|
||||||
|
Returns a new list containing elements from the population while
|
||||||
|
leaving the original population unchanged. The resulting list is
|
||||||
|
in selection order so that all sub-slices will also be valid random
|
||||||
|
samples. This allows raffle winners (the sample) to be partitioned
|
||||||
|
into grand prize and second place winners (the subslices).
|
||||||
|
|
||||||
|
Members of the population need not be hashable or unique. If the
|
||||||
|
population contains repeats, then each occurrence is a possible
|
||||||
|
selection in the sample.
|
||||||
|
|
||||||
|
Repeated elements can be specified one at a time or with the optional
|
||||||
|
counts parameter. For example:
|
||||||
|
|
||||||
|
sample(['red', 'blue'], counts=[4, 2], k=5)
|
||||||
|
|
||||||
|
is equivalent to:
|
||||||
|
|
||||||
|
sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5)
|
||||||
|
|
||||||
|
To choose a sample from a range of integers, use range() for the
|
||||||
|
population argument. This is especially fast and space efficient
|
||||||
|
for sampling from a large population:
|
||||||
|
|
||||||
|
sample(range(10000000), 60)
|
||||||
|
|
||||||
|
>>> lst=('a','b','c')
|
||||||
|
>>> random.sample(lst, 2)
|
||||||
|
['a', 'c']
|
||||||
|
>>> random.sample(lst, 0)
|
||||||
|
[]
|
||||||
|
>>> random.sample(list, 7)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\Lib\random.py", line 439, in sample
|
||||||
|
raise TypeError("Population must be a sequence. "
|
||||||
|
TypeError: Population must be a sequence. For dicts or sets, use sorted(d).
|
||||||
|
```
|
||||||
|
Случайное число, подчиняющееся бета-распределению
|
||||||
|
```py
|
||||||
|
>>> help(random.betavariate)
|
||||||
|
Help on method betavariate in module random:
|
||||||
|
|
||||||
|
betavariate(alpha, beta) method of random.Random instance
|
||||||
|
Beta distribution.
|
||||||
|
|
||||||
|
Conditions on the parameters are alpha > 0 and beta > 0.
|
||||||
|
Returned values range between 0 and 1.
|
||||||
|
|
||||||
|
>>> random.betavariate(3,4)
|
||||||
|
0.4104754948305531
|
||||||
|
>>> random.betavariate(3,4)
|
||||||
|
0.4104754948305531
|
||||||
|
```
|
||||||
|
Случайное число, подчиняющееся гамма-распределению
|
||||||
|
```py
|
||||||
|
>>> help(random.gammavariate)
|
||||||
|
Help on method gammavariate in module random:
|
||||||
|
|
||||||
|
gammavariate(alpha, beta) method of random.Random instance
|
||||||
|
Gamma distribution. Not the gamma function!
|
||||||
|
|
||||||
|
Conditions on the parameters are alpha > 0 and beta > 0.
|
||||||
|
|
||||||
|
The probability distribution function is:
|
||||||
|
|
||||||
|
x ** (alpha - 1) * math.exp(-x / beta)
|
||||||
|
pdf(x) = --------------------------------------
|
||||||
|
math.gamma(alpha) * beta ** alpha
|
||||||
|
|
||||||
|
>>> random.gammavariate(3,4)
|
||||||
|
18.75253913135498
|
||||||
|
```
|
||||||
|
Список из четырех чисел с разными законами распределения:
|
||||||
|
```py
|
||||||
|
>>> rd=[random.uniform(3,4),random.gauss(3,4),random.betavariate(3,4),random.gammavariate(3,4)]
|
||||||
|
>>> rd
|
||||||
|
[3.9065412706472173, 5.093585831129117, 0.423027969366889, 7.115102862880251]
|
||||||
|
```
|
||||||
|
## Пункт 6 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']
|
||||||
|
```
|
||||||
|
UNIX-время
|
||||||
|
```py
|
||||||
|
>>> c1=time.time()
|
||||||
|
>>> c1
|
||||||
|
1760272978.995956
|
||||||
|
>>> c2=time.time()-c1
|
||||||
|
>>> c2
|
||||||
|
12.162038326263428
|
||||||
|
```
|
||||||
|
Текущее время
|
||||||
|
```py
|
||||||
|
>>> time.gmtime
|
||||||
|
<built-in function gmtime>
|
||||||
|
>>> help(time.gmtime)
|
||||||
|
Help on built-in function gmtime in module time:
|
||||||
|
|
||||||
|
gmtime(...)
|
||||||
|
gmtime([seconds]) -> (tm_year, tm_mon, tm_mday, tm_hour, tm_min,
|
||||||
|
tm_sec, tm_wday, tm_yday, tm_isdst)
|
||||||
|
|
||||||
|
Convert seconds since the Epoch to a time tuple expressing UTC (a.k.a.
|
||||||
|
GMT). When 'seconds' is not passed in, convert the current time instead.
|
||||||
|
|
||||||
|
If the platform supports the tm_gmtoff and tm_zone, they are available as
|
||||||
|
attributes only.
|
||||||
|
|
||||||
|
>>> dat=time.gmtime()
|
||||||
|
>>> list(dat)
|
||||||
|
[2025, 10, 12, 12, 44, 15, 6, 285, 0]
|
||||||
|
>>> dat.tm_year
|
||||||
|
2025
|
||||||
|
>>> dat.tm_yday
|
||||||
|
285
|
||||||
|
>>> dat.tm_isdst #Показывает, действует ли летнее время (0 - нет, 1 - да, -1 - нет данных)
|
||||||
|
0
|
||||||
|
```
|
||||||
|
Текущее время с учетом часового пояса
|
||||||
|
```py
|
||||||
|
>>> here = time.localtime()
|
||||||
|
>>> here
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=15, tm_min=44, tm_sec=59, tm_wday=6, tm_yday=285, tm_isdst=0)
|
||||||
|
```
|
||||||
|
Время из кортежа в строку
|
||||||
|
```py
|
||||||
|
>>> time.asctime(here)
|
||||||
|
'Sun Oct 12 15:44:59 2025'
|
||||||
|
```
|
||||||
|
Время из секунд в строку
|
||||||
|
```py
|
||||||
|
>>> time.ctime()
|
||||||
|
'Sun Oct 12 15:46:30 2025'
|
||||||
|
```
|
||||||
|
Пауза
|
||||||
|
```py
|
||||||
|
>>> time.sleep(5)
|
||||||
|
```
|
||||||
|
Из кортежа в секунды с начала эпохи
|
||||||
|
```py
|
||||||
|
>>> time.mktime(here)
|
||||||
|
1760273099.0
|
||||||
|
```
|
||||||
|
## Пункт 7 Графические функции модуля pylab пакета matplotlib
|
||||||
|
```py
|
||||||
|
>>> import matplotlib
|
||||||
|
>>> import pylab
|
||||||
|
|
||||||
|
>>> x=list(range(-3,55,4))
|
||||||
|
>>> t=list(range(15))
|
||||||
|
|
||||||
|
>>> pylab.plot(t,x) #Создание графика в оперативной памяти
|
||||||
|
[<matplotlib.lines.Line2D object at 0x00000158D9921670>]
|
||||||
|
|
||||||
|
>>> pylab.title('Первый график')
|
||||||
|
Text(0.5, 1.0, 'Первый график')
|
||||||
|
|
||||||
|
>>> pylab.xlabel('время')
|
||||||
|
Text(0.5, 0, 'время')
|
||||||
|
>>> pylab.ylabel('сигнал')
|
||||||
|
Text(0, 0.5, 'сигнал')
|
||||||
|
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|
Два графика на одном окне
|
||||||
|
```py
|
||||||
|
>>> X1=[12,6,8,10,7]
|
||||||
|
>>> X2=[5,7,9,11,13]
|
||||||
|
>>> pylab.plot(X1) #Создание графика в оперативной памяти
|
||||||
|
[<matplotlib.lines.Line2D object at 0x000001905007A090>]
|
||||||
|
>>> pylab.plot(X2)
|
||||||
|
[<matplotlib.lines.Line2D object at 0x0000019050064D90>]
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|
Круговая диаграмма:
|
||||||
|
```py
|
||||||
|
>>> region=['Центр','Урал','Сибирь','Юг']
|
||||||
|
>>> naselen=[65,12,23,17]
|
||||||
|
>>> pylab.pie(naselen,labels=region)
|
||||||
|
([<matplotlib.patches.Wedge object at 0x00000158DBCC8820>, <matplotlib.patches.Wedge object at 0x00000158DBCC8760>, <matplotlib.patches.Wedge object at 0x00000158DBCC8FD0>, <matplotlib.patches.Wedge object at 0x00000158DBCDE490>], [Text(-0.1910130855889933, 1.083288512416601, 'Центр'), Text(-0.8613283319035216, -0.6841882085072037, 'Урал'), Text(0.04429273729355889, -1.0991078898011077, 'Сибирь'), Text(0.9873752043868569, -0.4848610169543564, 'Юг')])
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|
Гистограмма:
|
||||||
|
```py
|
||||||
|
>>> region=['Центр','Урал','Сибирь','Юг'] #Метки для диаграммы
|
||||||
|
>>> naselen=[65,12,23,17] # Значения для диаграммы
|
||||||
|
>>> pylab.pie(naselen,labels=region) #Создание диаграммы в памяти
|
||||||
|
([<matplotlib.patches.Wedge object at 0x000001904BFBD350>, <matplotlib.patches.Wedge object at 0x000001904F822550>, <matplotlib.patches.Wedge object at 0x000001904F83E5D0>, <matplotlib.patches.Wedge object at 0x000001904F83FC50>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
|
||||||
|
>>> pylab.show() #Отображение диаграммы
|
||||||
|
```
|
||||||
|
Столбиковая диаграмма:
|
||||||
|
```py
|
||||||
|
>>> a=['cat','dog','frog']
|
||||||
|
>>> v=[10,55,100]
|
||||||
|
>>> pylab.bar(a,v,color='purple')
|
||||||
|
<BarContainer object of 3 artists>
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|
## Пункт 8
|
||||||
|
|
||||||
|
Статистический модуль statistics
|
||||||
|
```py
|
||||||
|
>>> import statistics
|
||||||
|
>>> dir(statistics)
|
||||||
|
['Counter', 'Decimal', 'Fraction', 'LinearRegression', 'NormalDist', 'StatisticsError', '_SQRT2', '__all__', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_decimal_sqrt_of_frac', '_exact_ratio', '_fail_neg', '_float_sqrt_of_frac', '_integer_sqrt_of_frac_rto', '_isfinite', '_mean_stdev', '_normal_dist_inv_cdf', '_sqrt_bit_width', '_ss', '_sum', 'bisect_left', 'bisect_right', 'correlation', 'covariance', 'defaultdict', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'linear_regression', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'mul', 'multimode', 'namedtuple', 'numbers', 'pstdev', 'pvariance', 'quantiles', 'random', 'reduce', 'repeat', 'sqrt', 'stdev', 'sys', 'tau', 'variance']
|
||||||
|
```
|
||||||
|
Математическое ожидание
|
||||||
|
```py
|
||||||
|
>>> data = [0,11,8,5]
|
||||||
|
>>> statistics.mean(data)
|
||||||
|
6
|
||||||
|
```
|
||||||
|
Медиана
|
||||||
|
```py
|
||||||
|
>>> statistics.median(data)
|
||||||
|
6.5
|
||||||
|
```
|
||||||
|
Среднеквадратичное отклонение
|
||||||
|
```py
|
||||||
|
>>> statistics.stdev(data)
|
||||||
|
4.69041575982343
|
||||||
|
```
|
||||||
|
Дисперсия
|
||||||
|
```py
|
||||||
|
>>> statistics.variance(data)
|
||||||
|
22
|
||||||
|
```
|
||||||
|
Квантили
|
||||||
|
```py
|
||||||
|
>>> statistics.quantiles(data)
|
||||||
|
[1.25, 6.5, 10.25]
|
||||||
|
```
|
||||||
59
TEMA4/o.md
Обычный файл
59
TEMA4/o.md
Обычный файл
@@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
|
||||||
|
ОБЩЕЕ КОНТРОЛЬНОЕ ЗАДАНИЕ
|
||||||
|
|
||||||
|
• Напишите и исполните единое выражение, реализующее последовательное выполнение
|
||||||
|
следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата
|
||||||
|
до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из
|
||||||
|
двух значений: округленное вниз значение от деления результата на 3 и остатка от этого
|
||||||
|
деления
|
||||||
|
|
||||||
|
>>> divmod((round(cmath.phase(0.2 + 0.8j), 2) * 20), 3)
|
||||||
|
(8.0, 2.6000000000000014)
|
||||||
|
|
||||||
|
• Создайте объект класса struct_time с временными параметрами для текущего
|
||||||
|
московского времени. Создайте строку с текущим часом и минутами.
|
||||||
|
|
||||||
|
>>> nowtime = time.localtime()
|
||||||
|
>>> nowtime
|
||||||
|
time.struct_time(tm_year=2024, tm_mon=9,
|
||||||
|
tm_mday=30, tm_hour=1, tm_min=44, tm_sec=10, tm_wday=0, tm_yday=274, tm_isdst=0)
|
||||||
|
>>> nows = str(nowtime.tm_hour) + " " + str(nowtime.tm_min)
|
||||||
|
>>> nows
|
||||||
|
'1 44'
|
||||||
|
|
||||||
|
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку
|
||||||
|
из этого списка с тремя днями недели.
|
||||||
|
|
||||||
|
>>> week = ["понедельник", "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье"]
|
||||||
|
>>> random.sample(week, 3)
|
||||||
|
['вторник', 'суббота', 'четверг']
|
||||||
|
|
||||||
|
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от
|
||||||
|
14 до 32 с шагом 3.
|
||||||
|
|
||||||
|
>>> random.choice(range(14, 32, 3))
|
||||||
|
26
|
||||||
|
>>> random.choice(range(14, 32, 3))
|
||||||
|
14
|
||||||
|
|
||||||
|
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и
|
||||||
|
стандартным отклонением 4 и округлите его до целого значения. Создайте список с N
|
||||||
|
элементами – случайно выбранными буквами латинского алфавита.
|
||||||
|
|
||||||
|
>>> N = round(random.gauss(15,4))
|
||||||
|
>>> N
|
||||||
|
13
|
||||||
|
>>> lst = list("abcdefghijgklmnopqrstuvwxyz")
|
||||||
|
>>> random.sample(lst, N)
|
||||||
|
['i', 'g', 'g', 'j', 't', 's', 'r', 'v', 'f', 'y', 'b', 'z', 'l']
|
||||||
|
|
||||||
|
Или в одну строку:
|
||||||
|
>>> random.sample(list("abcdefghijgklmnopqrstuvwxyz"), round(random.gauss(15,4)))
|
||||||
|
['l', 'u', 'z', 'g', 't', 'd', 'f', 'e', 'm', 'k']
|
||||||
|
|
||||||
|
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с
|
||||||
|
момента предыдущего (из п.2) определения временных параметров.
|
||||||
|
|
||||||
|
>>> (time.mktime(nowtime) - time.mktime(time.localtime())) / 60
|
||||||
|
-27.216666666666665
|
||||||
Ссылка в новой задаче
Block a user