Сравнить коммиты

..

27 Коммитов
main ... main

Автор SHA1 Сообщение Дата
Пользователь № 9 аудитории Ж-206 15578754ba personal task 13
2 недель назад
SavinSA 5a4421bf33 Merge branch 'main' of http://uit.mpei.ru/git/SavinSA/python-labs
2 недель назад
SavinSA 86306314fd test
2 недель назад
SavinSA b2b611eb63 report added+photos
2 недель назад
SavinSA 2ee8aa2899 report+task
2 недель назад
SavinSA fa90ac00b2 report first half
2 недель назад
SavinSA 5e908a0f12 added report
2 недель назад
SavinSA 5942877cd9 TEMA2 report v2
2 недель назад
SavinSA 112ca055da TEMA2 report v1
2 недель назад
u207-05 be107f40c8 Task_3: Q&A
2 недель назад
u207-05 e34e01b1e9 report v3
2 недель назад
u207-05 5ec523cfd4 v3
2 недель назад
u207-05 249d1dd95d Task_2 reporn v2
2 недель назад
u207-05 4123c770c8 Task_2: report v1
2 недель назад
u207-05 fbb7d44706 Task_1: First commit
2 недель назад
Пользователь № 9 аудитории Ж-206 5e199363b2 module 1 full test
4 недель назад
SavinSA e2752e97c9 report+task
4 недель назад
SavinSA 40da83b905 report first half
4 недель назад
SavinSA 1d82fffef6 added report
4 недель назад
SavinSA 69140eab84 TEMA2 report v2
1 месяц назад
SavinSA 17841b48b2 TEMA2 report v1
1 месяц назад
u207-05 3eee856b82 Task_3: Q&A
2 месяцев назад
u207-05 ee7055033d report v3
2 месяцев назад
u207-05 092d7820f2 v3
2 месяцев назад
u207-05 be2feb4df8 Task_2 reporn v2
2 месяцев назад
u207-05 e91ec0837f Task_2: report v1
2 месяцев назад
u207-05 82f210a62b Task_1: First commit
2 месяцев назад

@ -0,0 +1,6 @@
#This is a very profound comment
#Программа по Теме 1 Савин С.А.
print('Hello')
h = input('Your name is -')
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')

Двоичные данные
TEMA1/pic1.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 39 KiB

Двоичные данные
TEMA1/pic2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 42 KiB

@ -0,0 +1,127 @@
# Отчет по теме 1
Савин Семён, А-02-23
# Основы языка программирования Python
## Пункты3-5
Через командную строку вы
```py
print('Hello')
h=input('Your name is -')
Hello
Your name is -sam
exit()
```
Программа закрыта (Вся командная строка)
## Пункт 8:
```py
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')
```
## Пункт 9:
Были изменены параметры текста в редакторе при помощи меню "Options"
## Пункт 10:
Создан новый файл в редакторе написано:
```py
#This is a very profound comment
#Программа по Теме 1 Савин С.А.
print('Hello')
h = input('Your name is -')
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')
```
Модуль запущен
### Вывод:
```py
= RESTART: C:/Users/u207-05/python-labs/TEMA1/Pr0.py
Hello
Your name is -sam
```
Последняя команда выбора рабочей папки выполнена без ошибок.
Также файл был выполнен следующим образом:
```py
import Pr0
Hello
Your name is -sam
```
И аналогично через клавишу F5 в открытом редакторе.
## Пункт 11:
При помощи повторного вызова команды import вставили имя файла - "prb1"
```py
import prb1
Как Вас зовут? Семён
Привет, Семён
```
## Пункт 12:
В папке __pycache__ нашел файл
pr0.cpython-311, открыл при помощи notepad++
Содержимое:
§
№йєhВ г  уZ —  e d ¦ «   ed¦ « ZddlZ ej d¦ «  dS )ЪHellozYour name is -й Nz"C:\Users\u207-05\python-labs\TEMA1)ЪprintЪinputЪosЪchdir© у ъ)C:\Users/u207-05/python-labs/TEMA1\Pr0.pyъ<module>r  sF рр ЂЂgЃЂШ ЂEР
СФЂШ Ђ Ђ Ђ Ш ЂР .С /Ф /Р /Р /Р /r
Это резльтат компиляции, который выглядит так по причине того, что в данной папке хранятся байт-коды, используемые при запуске программы для увеличения оптимизации.
## Пункт 13:
Пропущен по причине уже созданного файла report.md.
## Пункт 14:
Вызвана команда help по нескольким функциям.
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.
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.
Также была найдена запись о функции print() через f1
## Пункт 15:
Были снова выполнены файлы из рабочей папки, проведена работа с окнами.
Результат работы tdemo_chaos:
![Демонстрация хаоса](pic1.png)
Результат работы часов clock из примеров для демо:
![Часы](pic2.png)

@ -0,0 +1,11 @@
# Общее контрольное задание по теме 1
Савин Семён, А-02-23
## Вопрос 3
Что означает название интерактивной оболочки IDLE?
## Ответ
Integrated Development and Learning Environment (Интегрированная среда разработки и обучения)

@ -0,0 +1,531 @@
# Отчет по Теме 2
Савин Семён, А-02-23
## Пункт 2. Изучение простых объектов
Переменным f1 и f2 были присвоены значения (целые числа).
```py
>>> import os
>>> os.chdir ('C:\\Users\\somas\\python-labs\\TEMA2')
>>> f1 = 16; f2 = 3
>>> f1, f2
(16, 3)
>>> f1;f2
16
3
```
Проверяем, какие объекты есть в среде python, а также выводим атрибуты для переменной f1.
```py
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os']
>>> 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__', 'as_integer_ratio', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
```
Выводим класс переменной f2 и удаляем обе переменные с проверкой удаления.
```py
>>> type (f2)
<class 'int'>
>>> del f1,f2
>>> f1,f2
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
f1,f2
NameError: name 'f1' is not defined
>>> f2
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
f2
NameError: name 'f2' is not defined
```
## Пункт 3. Правила именования объектов
Создал несколько переменных разных типов, а также с неверным названием.
```py
>>> ggl = 1.6
>>> hhl = 'Строка'
>>> 73sr = 3
SyntaxError: invalid syntax
>>> and = 7
SyntaxError: invalid syntax
```
## Пункт 4. Просмотр ключевых слов
Был выведен и сохранен в переменной keylist список ключевых слов.
```py
>>> keyword.kwlist
['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']
>>> keylist = keyword.kwlist
>>> keylist
['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']
```
## Пункт 5. Просмотр встроенных идентификаторов
Получен список встроенных идентификаторов
```py
>>> import builtins
>>> dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', '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', 'all', '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']
```
Получена помощь по нескольким из них. Также были опробованы несколько функций
abs - модуль от числа
max/min - вывод максимального/минимального числа для либо списка либо для нескольких перечисленных переменных
len - выводит кол-во объектов в контейнере
pow - возводит число в степень
round - округляет число
sum - дает сумму всех элементов в контейнере
sorted - сортирует по возрастанию элементы в контейнере
zip - "сшивает" значения из одной последовательности значений с соответвтвующими значениями из другой
```py
>>> x = -3
>>> abs(x)
3
>>> pow(x,2)
9
>>> x = 1.576
>>> round(x)
2
>>> x = 1.50
>>> round(x)
2
```
## Пункт 6. Значимость регистра
При присваивании имен переменным важен также регистр букв.
```py
>>> x = 1.576
>>> round(x)
2
>>> x = 1.50
>>> round(x)
2
```
## Пункт 7. Изучение простых базовых типов.
## 7.1. Логический тип
```py
>>> bb1 = True; bb2 = False
>>> bb1,bb2
(True, False)
>>> type(bb1)
<class 'bool'>
```
## 7.2. Другие простые типы
Изучены некоторые другие типы числовых переменных
```py
>>> ii1 = -1234567890
>>> type(ii1)
<class 'int'>
>>> ff1 = -8.9876e-12
>>> type(ff1)
<class 'float'>
>>> dv1 = 0b1101010
>>> type(dv1)
<class 'int'>
>>> vsm1 = 0o52765
>>> shest1 = 0x7109af6
>>> ccl = 2-3j
>>> a = 3.67; b = -0.45
>>> cc2 = complex(a,b)
>>> cc2
(3.67-0.45j)
>>> type(cc2)
<class 'complex'>
```
## 7.3. Строка
Также изучили разные способы вывода простой строки с помощью "экранированных последовательностей"
```py
>>> ss1 = 'this is a string'
>>> print(ss1)
this is a string
>>> ss1a = "this is a \" string \", \n \t printed on two lines"
>>> print(ss1a)
this is a " string ",
printed on two lines
>>> ss1b = "my name is: \n Savin S.A."
>>> print(ss1b)
my name is:
Savin S.A.
```
Также вывели многострочное предложение с помощью тройных кавычек
```py
>>> mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции."""
>>> print(mnogo)
Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.
```
Изучил действия со сторокой - вывд определенных букв по индексу в строке, а так же разрезание строки(с шагами 1 и 2)
```py
>>> ss1[0]
't'
>>> ss1[8]
'a'
>>> ss1[-2]
'n'
>>> ss1[6:9]
's a'
>>> ss1[13:]
'ing'
>>> ss1[5:-8]
'is '
>>> ss1[3:17:2]
'si tig'
>>> ss1[17:3:-2]
'git i'
>>> ss1[-4:3:-2]
'rsas '
```
(Изначальная строка - this is a string)
При изменении строки случается ошибка - так как строка неизменяема. Однако при переопределении можно внести изменения.
```py
>>> ss1[4] = '='
Traceback (most recent call last):
File "<pyshell#88>", line 1, in <module>
ss1[4] = '='
TypeError: 'str' object does not support item assignment
>>> ss1 = ss1[:4] + '+' + ss1[5:]
>>> ss1
'this+is a string'
```
Самостоятельно поработал со строкой ss1b - двухстрочное предложение. А также удалил старые значения x,y, заменив на другие.
Проверил их тип.
```py
>>> ss1b[4:17:2]
'aei:\nSv'
>>> ss1b[16:]
'vin S.A.'
>>> ss1b[14:]
'Savin S.A.'
>>> del x
>>> del y
>>> x = True
>>> y = 14-5j
>>> type(x);type(y)
<class 'bool'>
<class 'complex'>
```
## Пункт 8. Изучение более сложных типов.
## 8.1. Список
Работа со списками - можно задать любые значение и типы. Список - упорядоченная коллекция объектов.
```py
>>> spis1 = [111,'spisok', 5-9j]
>>> 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]
>>> spis = [1,2,3,4,
5,6,7,8,
9,10]
>>> spis
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
```
Также по индексу можно сослаться на определенные элементы. Или перечислить с некоторым шагом.
```py
>>> spis[-1]
10
>>> stup[-8::2]
[0, 1, 1, 1]
>>> spis[-9::2]
[2, 4, 6, 8, 10]
```
Списки можно изменять, меняя элементы и переписывая их.
```py
>>> spis1[1] = 'Список'
>>> spis1
[111, 'Список', (5-9j)]
```
len(...) возвращает длину списка(количестево элементов в контейнере)
spis1.append(элемент) добавляет элемент в конец списка
spis1+[элемент] - добавляет элемент на вывод 1 раз. Не вписывает этот элемент в список
spis1.pop(индекс элемента) - удаляет элемент с указанным индексом
spis1.reverse - переворачивает список
spis1.insert(индекс, элемент) - вставляет элемент после элемента с указанным индексом
spis1.extend(список) - присоединяет в конец другой список
spis1.remove(элемент) - удаляет первый встреченный элемент равный указанному
spis1.sort() - сортирует список в порядке возрастания
spis1.copy() - создает поверхностную копию(shallow copy)
spis1.index(элемент) - возвращает индекс первого соответсвующего элемента
spis1.clear() - очищает список
spis1.count(элемент) - считает кол-во соответствующих элементов
```py
>>> len(spis)
10
>>> len(spis1)
3
>>> 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')
>>> spis1
[111, 'Список', (5-9j), 'New item']
>>> spis1+['Newest item']
[111, 'Список', (5-9j), 'New item', 'Newest item']
>>> spis1
[111, 'Список', (5-9j), 'New item']
>>> spis1.append(ss1b)
>>> spis1
[111, 'Список', (5-9j), 'New item', 'my name is: \n Savin S.A.']
>>> spis1.pop(1)
'Список'
>>> spis1
[111, (5-9j), 'New item', 'my name is: \n Savin S.A.']
>>> spis1.reverse
<built-in method reverse of list object at 0x000001D8904F0C80>
>>> spis1
[111, (5-9j), 'New item', 'my name is: \n Savin S.A.']
>>> spis1.reverse()
>>> spis1
['my name is: \n Savin S.A.', 'New item', (5-9j), 111]
>>> spis1.insert(2, 2+ 2j)
>>> spis1
['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111]
>>> spis1.extend(spis)
>>> spis1
['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> spis1.append('New item')
>>> spis1
['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'New item']
>>> spis1.remove('New item')
>>> spis1
['my name is: \n Savin S.A.', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'New item']
>>> spis1.count(1)
1
>>> spis1.index(10)
13
>>> spis.clear()
>>> spis1.clear()
>>> spis1
[]
>>> spis
[]
```
Далее создаем вложенные списки. Здесь я также попробовал применить spis2.copy() и проверить как работает поверхностная копия.
В итоге сделан вывод - изменения в копии не вносятся только на первом уровне. Если поменять вложенный список, то он поменяется и для оригинала.
Тут же я самостоятельно изменил вложенный элемент при помощи append. После изменил значения элемента во вложенном списке.
```py
>>> spis1 = (1,2,3)
>>> spis1 = [1,2,3]
>>> spis1
[1, 2, 3]
>>> spis2 = [spis1,[4,5,6,7]]
>>> spis2
[[1, 2, 3], [4, 5, 6, 7]]
>>> copytest = spis2.copy()
>>> copytest
[[1, 2, 3], [4, 5, 6, 7]]
>>> spis2
[[1, 2, 3], [4, 5, 6, 7]]
>>> copytest.append(3)
>>> copytest
[[1, 2, 3], [4, 5, 6, 7], 3]
>>> spis2
[[1, 2, 3], [4, 5, 6, 7]]
>>> copytest
[[1, 2, 3], [4, 5, 6, 7], 3]
>>> copytest[1].append(2)
>>> copytest
[[1, 2, 3], [4, 5, 6, 7, 2], 3]
>>> spis2
[[1, 2, 3], [4, 5, 6, 7, 2]]
>>> spis2
[[1, 2, 3], [4, 5, 6, 7, 2]]
>>> spis2[0] = 78
>>> spis2
[78, [4, 5, 6, 7, 2]]
```
## 8.2. Кортеж
Работа с кортежами - их нельзя изменять, но можно переопределять, таким образом внося изменения.
```py
>>> kort1 = (222,'Kortezh', 77+8j)
>>> kort1
(222, 'Kortezh', (77+8j))
>>> kort1 = kort1 + (1,2)
>>> kort1
(222, 'Kortezh', (77+8j), 1, 2)
>>> kort1 = kort1 + (ss1b,)
>>> kort1
(222, 'Kortezh', (77+8j), 1, 2, 'my name is: \n Savin S.A.')
>>> kort2 = kort1[:2] + kort1[3:]
>>> kort2
(222, 'Kortezh', 1, 2, 'my name is: \n Savin S.A.')
>>> kort2.index(2)
3
>>> kort2.count(222)
1
>>> kort2[2] = 90
Traceback (most recent call last):
File "<pyshell#227>", line 1, in <module>
kort2[2] = 90
TypeError: 'tuple' object does not support item assignment
```
## 8.3. Словарь
Работа со словарями. Ключи - неизменяемы.
```py
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> 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]
>>> dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
>>> dic2={1:'mean', 2:'standart deviation', 3:'correlation'}
>>> dic2
{1: 'mean', 2: 'standart deviation', 3: 'correlation'}
>>> dic3={'statistics':dic2, 'POAS':['base','elementary','programming']}
>>> dic3
{'statistics': {1: 'mean', 2: 'standart deviation', 3: 'correlation'}, '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': 'my name is: \n Savin S.A.'}
>>> dic5 = dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
>>> dic5
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'my name is: \n Savin S.A.'}
```
Свой словарь состоит из 5 элементов, потому что мы "сшили" два контейнера, длина определилась по минимальному кол-ву.
```py
>>> testkort = ('B','S','M','H','D','A','R')
>>> testlist = ['bow','sword','mace','helbard','dirk']
>>> dictest=dict(zip(testkort,testlist))
>>> dictest
{'B': 'bow', 'S': 'sword', 'M': 'mace', 'H': 'helbard', 'D': 'dirk'}
```
## 8.4. Множество
Множества могут состоять только из неповторяющихся неизменяемых элементов - при создании множества со списком выведет ошибку.
```py
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
>>> mnoz1
{'линия связи', 'датчик', 'микропроцессор', 'двигатель'}
>>> len(mnoz1)
4
>>> 'датчик' in mnoz1
True
>>> mnoz1.add('htkt')
>>> mnoz1.remove('htkt')
>>> mnoz1.add('реле')
>>> mnoz1
{'датчик', 'двигатель', 'микропроцессор', 'линия связи', 'реле'}
>>> mnoz1.remove('линия связи')
>>> mnoz1
{'датчик', 'двигатель', 'микропроцессор', 'реле'}
>>> mnoz2 = {'дерево', 15, 78, [6,7,8]}
Traceback (most recent call last):
File "<pyshell#268>", line 1, in <module>
mnoz2 = {'дерево', 15, 78, [6,7,8]}
TypeError: unhashable type: 'list'
>>> kortmnoz = (7,8,7,8)
>>> mnoz2 = {'дерево', 16, 19, kortmnoz}
>>> mnoz2
{16, (7, 8, 7, 8), 19, 'дерево'}
>>> mnoz2.add(kort1)
>>> mnoz2
{(222, 'Kortezh', (77+8j), 1, 2, 'my name is: \n Savin S.A.'), 16, (7, 8, 7, 8), 19, 'дерево'}
>>> mnoz2.remove('дерево')
>>> mnoz2
{(222, 'Kortezh', (77+8j), 1, 2, 'my name is: \n Savin S.A.'), 16, (7, 8, 7, 8), 19}
>>> len(mnoz2)
4
```
# Общее контрольное задаие по теме 2
Савин Семён, А-02-23
## Задание
1) Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции.
2) Создать переменную со значением, совпадающим с первой буквой из familia.
3) Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
4) Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
5) Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
6) Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
7) Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
8) Создайте словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам.
## Решение
```py
>>> familia = 'Savin'
>>> familia
'Savin'
>>> bukva = familia[0]
>>> bukva
'S'
>>> sp_kv = keyword.kwlist
>>> sp_kv
['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']
>>> sp_kv.remove('nonlocal')
>>> sp_kv
['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']
>>> kort_nam = ('Семён', 'Ярослав', 'Миша')
>>> type(kort_nam)
<class 'tuple'>
>>> kort_nam.count('Дима')
0
>>> dict_bas = {'Строка': [familia,bukva], 'Список': sp_kv, 'Кортеж': kort_nam}
>>> dict_bas
{'Строка': ['Savin', 'S'], 'Список': ['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'], 'Кортеж': ('Семён', 'Ярослав', 'Миша')}
```
Для работы со строкой использовал ссылку по индексу, отпечатал первую букву.
Для работы со списком присвоил значению sp_kv keyword.kwlist - это уже список, поэтому без []
В кортеж не записано имен "Дима", kort_nam.count('Дима') выводит 0
Внес в словарь две строки, перед эти объединив их в список - одному ключу одно значение.

@ -0,0 +1,61 @@
# Общее контрольное задание по Теме 3
Савин Семён, А-02-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
Преобразовать восьмеричное значение 45 в целое число.
Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?
Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.
Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.
Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов.
Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
## Решение
```py
>>> x = "45"
>>> x = int(x,8)
>>> x
37
>>> D = {"усиление":23, "запаздывание":12, "постоянная времени":78}
>>> Dk = list(D.keys())
>>> Dk
['усиление', 'запаздывание', 'постоянная времени']
>>> Dv = list(D.values())
>>> Dv
[23, 12, 78]
>>> kort = tuple(Dk+Dv)
>>> kort
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
>>> ((1768//24.8)%3)**2.4
5.278031643091577
>>> ((~(13&27))^14)<<2
-32
>>> spis = ["колебат","колебат","колебат","колебат"]
>>> 'аткол' in (spis[1] + spis[2])
True
>>> 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']
>>> type(D.keys())
<class 'dict_keys'>
>>> type(D.values())
<class 'dict_values'>
>>> stroka = 'Создать объект - символьную строку с текстом данного предложения'
>>> stroka1 = stroka.split()
>>> stroka1
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
>>> stroka1[2] = ','
>>> del stroka1[7]
>>> stroka1
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
```

@ -0,0 +1,598 @@
# Отчет по Теме 3
Савин Семён, А-02-23
## Пункт 2. Преобразование простых типов объектов.
## 2.1 Преобразование в логический тип
```py
logiz1 = bool(56)
>>> logiz2 = bool(0)
>>> logiz3 = bool("Beta")
>>> logiz4 = bool("")
>>> logiz1
True
>>> logiz2
False
>>> logiz3
True
>>> logiz4
False
```
## 2.2 Преобразование в целое число
```py
tt1 = int(198.6)
>>> tt2 = int("-76")
>>> tt3 = int("B",16)
>>> tt4 = int("71",8)
>>> tt5 = int("98.76")
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
tt5 = int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'
>>> tt1
198
>>> tt2
-76
>>> tt3
11
>>> tt4
57
```
## 2.3 Преобразование в вещественное число
```py
flt1 = float(789)
>>> flt2 = float(-6.78e2)
>>> flt3 = float ("Infinity")
>>> flt4 = float("-inf")
>>> flt1
789.0
>>> flt2
-678.0
>>> flt3
inf
>>> flt4
-inf
```
## Пункт 3. Преобразование более сложных базовых типов объектов.
## 3.1. Преобразование в строку
```py
>>> strk1 = str(23.6)
>>> strk2 = str(logiz3)
>>> strk3 = str(["A","B","C"])
>>> strk4 = str(("A","B","C"))
>>> strk5=str({"A":1,"B":2,"C":9})
>>> strk1
'23.6'
>>> strk2
'True'
>>> strk3
"['A', 'B', 'C']"
>>> strk4
"('A', 'B', 'C')"
>>> strk5
"{'A': 1, 'B': 2, 'C': 9}"
```
## 3.2. Преобразование в список
```py
>>> spis1 = list("Строка символов")
>>> spis2 = list((124,236,-15,908))
>>> spis3 = list({"A":1,"B":2,"C":9})
>>> spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
>>> spis2
[124, 236, -15, 908]
>>> spis3
['A', 'B', 'C']
```
## 3.3. Преобразование в кортеж
```py
>>> kort7=tuple('Строка символов')
>>> kort8 = tuple(spis2)
>>> kort9 = tuple({"A":1, "B":2, "C":9})
>>> kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
>>> kort8
(124, 236, -15, 908)
>>> kort9
('A', 'B', 'C')
```
## 3.4 Удаление объектов
```py
>>> del strk5,kort8
>>> strk5
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
strk5
NameError: name 'strk5' is not defined
>>> kort8
Traceback (most recent call last):
File "<pyshell#50>", line 1, in <module>
kort8
NameError: name 'kort8' is not defined
```
## Пункт 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
```
## 4.4. Деление с округлением вниз
```py
>>> b=178//45
>>> c=-24.6//12.1
>>> b
3
>>> c
-3.0
```
## 4.5. Получение остатка от деления
```py
>>> 146%33
14
>>> 148%33
16
>>> 12.6%3.8
1.2000000000000002
>>> 11%3.8
3.4000000000000004
>>> 4.0%1.0
0.0
```
## 4.6. Возведение в степень
```py
>>> 14**3
2744
>>> e=2.7**3.6
>>> e
35.719843790663525
>>> 2**4.5
22.627416997969522
>>> g = 14 - 8j
>>> g**2
(132-224j)
>>> g%2
Traceback (most recent call last):
File "<pyshell#79>", line 1, in <module>
g%2
TypeError: can't mod complex numbers.
>>> g//2
Traceback (most recent call last):
File "<pyshell#80>", line 1, in <module>
g//2
TypeError: can't take floor of complex number.
>>> g/2
(7-4j)
>>> g*5
(70-40j)
```
## Пункт 5. Операции с двоичными представлениями целых чисел.
## 5.1. Двоичная инверсия
```py
>>> dv1 = 9
>>> dv2 = ~dv1
>>> bin(dv2)
'-0b1010'
```
## 5.2. Двоичное "И"
```py
>>> bin(7&9)
'0b1'
>>> bin(7&8)
'0b0'
```
## 5.3. Двоичное "ИЛИ"
```py
>>> a = bin(7|9)
>>> b = bin(7|8)
>>> a
'0b1111'
>>> b
'0b1111'
```
## 5.4. Двоичное "исключающее ИЛИ"
```py
>>> c = bin(14^5)
>>> c
'0b1011'
```
## 5.5. Сдвиг двоичного представления
```py
>>> h = 14
>>> bin(h)
'0b1110'
>>> g = h<<2
>>> g
56
>>> bin(g)
'0b111000'
>>> g1 = h>>1
>>> g2 = h>>2
>>> bin(g1), bin(g2)
('0b111', '0b11')
```
## Пункт 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
>>> signal2=(0,)*3+(1,)*5+(0,)*7
>>> 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, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
```
## 6.3. Проверка наличия заданного элемента.
```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='Температура = %(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
-10
>>> zz/=2
>>> zz
-5.0
>>> zz*=5
>>> zz
-25.0
```
## 7.4. Деление с округлением, вычисление остатка и возведение в степень.
```py
>> zz+=2.7
>>> zz
-2.3
>>> zz//=2
>>> zz
-2.0
>>> zz+=8.5
>>> zz
6.5
>>> zz%=4
>>> zz
2.5
>>> zz**=2
>>> zz
6.25
```
## 7.5. Множественное присваивание
```py
>>> w=v=10
>>> n1,n2,n3=(11,-3,'all')
>>> w
10
>>> v
10
>>> n1
11
>>> n2
-3
>>> n3
'all'
>>> n1,n2,n3 = [11,-3,'all']
>>> n1
11
>>> n2
-3
>>> n3
'all'
>>> n1,n2,n3 = {11,-4,'al'}
>>> n1
11
>>> n2
-4
>>> n3
'al'
>>> testdict
{'a': 'test1', 'b': 14, 'c': 'test3'}
>>> n1,n2,n3 = testdict["a"], testdict["b"], testdict["c"]
>>> n1
'test1'
>>> n2
14
>>> n3
'test3'
>>> strka = "ФБВГД"
>>> n1,n2,n3 = strka[1],strka[3], strka[4]
>>> n1
'Б'
>>> n2
'Г'
>>> n3
'Д'
```
## Пункт 8. Логические операции.
## 8.1. Операции сравнения.
```py
>>> w==v
True
>>> w<=v
True
>>> w>=v
True
>>> w>v
False
>>> w<v
False
>>> w
10
>>> v
10
```
## 8.2. Проверка наличия заданного элемента в последовательности, множестве. Наличие ключа в словаре
```py
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
>>> 'book' in mnoz1
True
>>> 'cap' in mnoz1
False
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> 'Vologda' in dic1
True
>>> 'Pskov' in dic1
False
>>> 56 in dic1.values()
True
>>> 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. Создание больших логических выражений с использованием соединительных слов.
```py
>>> a = 17
>>> b=-6
>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
>>> (a==b) or ("AVTI" in dct1["Institut"])
True
>>> not ("book" in mnoz1) and("Moskow" in dic1)
False
```
## 8.4. Проверка ссылок переменных на один и тот же объект
```py
>>> w=v=10
>>> w is v
True
>>> w1=['A','B']
>>> v1=['A','B']
>>> w1 is v1
False
>>> w1=v1=['A','B']
>>> w1 is v1
True
```
## Пункт 9. Операции с объектами, выполняемые с помощью методов.
## 9.1. Методы для работы со строками.
```py
>>> stroka='Микропроцессорная система управления'
>>> dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__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']
>>> stroka.find('пр')
5
>>> stroka.count("с")
4
>>> stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>> spis22=stroka.split(' ')
>>> spis22
['Микропроцессорная', 'система', 'управления']
>>> stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
>>> stroka3 = "".join(spis22)
>>> stroka3
'Микропроцессорнаясистемауправления'
>>> stroka3.partition("c")
('Микропроцессорнаясистемауправления', '', '')
>>> stroka3.partition("с")
('Микропроце', 'с', 'сорнаясистемауправления')
>>> stroka3.rpartition("с")
('Микропроцессорнаяси', 'с', 'темауправления')
>>> help(format)
Help on built-in function format in module builtins:
format(value, format_spec='', /)
Return value.__format__(format_spec)
format_spec defaults to the empty string.
See the Format Specification Mini-Language section of help('FORMATTING') for
details.
>>> strk1='Момент времени {}, значение = {}'
>>> strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
>>> strk2='Момент времени {1}, значение = {0}:{2}'
>>> strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
>>> strk3='Момент времени {num}, значение = {znch}'
>>> strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
```
## 9.2. Методы работы со списками.
```py
>>> spsk = [1,2,3,4,5,'a','b','c']
>>> spsk.pop(2)
3
>>> spsk.append('c')
>>> spsk
[1, 2, 4, 5, 'a', 'b', 'c', 'c']
>>> spsk.insert(2,'a')
>>> spsk
[1, 2, 'a', 4, 5, 'a', 'b', 'c', 'c']
>>> spsk.count('a')
2
>>> spsk
[1, 2, 'a', 4, 5, 'a', 'b', 'c', 'c']
>>> dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
```
## 9.3. Методы работы с кортежами
```py
>>> kort = (1,2,3,4,5,'a','c')
>>> dir(kort)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
>>> kort.count(a)
0
>>> kort.count('a')
1
>>> len(kort)
7
```
## 9.4. Методы работы с множествами и словарями
```py
>>> slova = {"A": 123, "B":456}
>>> dir(slova)
['__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']
>>> slova.keys()
dict_keys(['A', 'B'])
>>> slova.items
<built-in method items of dict object at 0x0000022F4A053F00>
>>> mnoz = {1,2,3,4,5,6}
>>> dir(mnoz)
['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
>>> mnoz.pop()
1
>>> mnoz
{2, 3, 4, 5, 6}
```

@ -0,0 +1,94 @@
# Тест по теме 3
Савин Семён, А-02-23
## Вариант 26.
## Вопрос 1. Можно ли с помощью оболочки IDLE создавать загрузочные (ЕХЕ,СОМ) программы?
В самом IDLE нельзя создавать загрузочные файлы, только скрипты, после чего можно преобразовать в сторонних программах.
## Вопрос 2.
Задание: Создайте объект-множество с 8 элементами - статистическими терминами ("среднее значение",:). Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
## Решение
```py
mnozstat = {"среднее значение", "медиана", "дисперсия", "корелляция", "стандартное отклонение", "выборка", "математическое ожидание"}
mnozstat
{'медиана', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
type(mnozstat)
<class 'set'>
dir(mnozstat)
['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
```
## Вопрос 3.
Задание: Напишите инструкцию удаления из множества одного из терминов, например, "среднее значение". Добавьте вместо него термин "математическое ожидание". Отобразите на экране получившийся объект.
## Решение
```py
mnozstat
{'медиана', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
mnozstat.remove("медиана")
mnozstat
{'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
mnozstat.add("математическое ожидание")
mnozstat
{'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
mnozstat.add("матожидание")
mnozstat
{'матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
```
При добавлении "Математическое ожидание" множество не изменилось, т.к. множество содержит неповторяющиеся объекты.
Доавил вместо этого "матожидание".
## Вопрос 4.
Задание: Преобразуйте множество в список. Отобразите полученный объект. Добавьте в конец списка значение "гетероскедастичность". Напишите инструкцию вывода из этого значения в списке символов, начиная с 7-го и до 13-го.
## Решение
```py
liststat = list(mnozstat)
liststat
['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение']
liststat.append("гетероскедастичность")
liststat
['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение', 'гетероскедастичность']
liststat[-1]
'гетероскедастичность'
stringtest=liststat[-1]
stringtest
'гетероскедастичность'
stringtest[6:13]
'скедаст'
```
Два способа - первый не использует дополнительную переменную.
## Вопрос 5.
Задание: Создайте на основе множества словарь, в котором ключи - термины из множества, а значения - код термина (например, число - порядковый номер).
## Решение
```py
slovtest1 = dict(zip(liststat,["M1","M2","M3","M4","M5","M6","M7","M8"]))
slovtest1
{'матожидание': 'M1', 'выборка': 'M2', 'стандартное отклонение': 'M3', 'корелляция': 'M4', 'дисперсия': 'M5', 'математическое ожидание': 'M6', 'среднее значение': 'M7', 'гетероскедастичность': 'M8'}
slovtest.keys()
dict_keys(['матожидание'])
slovtest1.keys()
dict_keys(['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение', 'гетероскедастичность'])
slovtest1.values()
dict_values(['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8'])
slovtest2 = dict(zip(mnozstat,[1,2,3,4,5,6,7,8]))
slovtest2
{'матожидание': 1, 'выборка': 2, 'стандартное отклонение': 3, 'корелляция': 4, 'дисперсия': 5, 'математическое ожидание': 6, 'среднее значение': 7}
```
Через dict(zip()) можно "сшить" и два списка, и список со множеством, чтобысоздать словарь.

Двоичные данные
TEMA4/1.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 20 KiB

Двоичные данные
TEMA4/2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 24 KiB

Двоичные данные
TEMA4/Ris2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 18 KiB

Двоичные данные
TEMA4/bar.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 11 KiB

Двоичные данные
TEMA4/hist1.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 11 KiB

Двоичные данные
TEMA4/hist2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 14 KiB

@ -0,0 +1,344 @@
# Отчёт по теме 4
Савин Семён, А-02-23
## Пункт 2. Стандартные функции из модуля builtins.
## Пункт 2.1. Округление
```py
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
>>> round(123.456,1)
123.5
>>> round(123.456,0)
123.0
>>> round(123.456)
123
```
## Пункт 2.2. Создание последовательности
```py
>>> gg = range(76,123,9)
>>> gg
range(76, 123, 9)
>>> list(gg)
[76, 85, 94, 103, 112, 121]
>>> range(23)
range(0, 23) #шаг по умолчанию 1, от 0 до 22.
>>>
```
## Пункт 2.3. Zip
```py
>>> qq = ["Савин", "Мамакин", "Капитонов", "Симанков"]
>>> ff = zip(gg,qq)
>>> tuple(ff)
((76, 'Савин'), (85, 'Мамакин'), (94, 'Капитонов'), (103, 'Симанков'))
>>> ff[1]
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
ff[1]
TypeError: 'zip' object is not subscriptable #нельзя обращаться по индексу
```
## Пункт 2.4. Eval
```py
>>> fff=float(input('коэффициент усиления='))
коэффициент усиления=13
>>> dan = eval('5*fff-156')
>>> dan
-91.0
```
## Пункт 2.5. Exec
```py
>>> exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
>>> gg
221.456
>>>
```
## Пункт 2.6. Другие встроенные функции
```py
>>> hi = 6
>>> hello = pow(hi,2)
>>> hello
36
>>> 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(40, 13)
(3, 1)
>>> list(map(len,qq))
[5, 7, 9, 8]
```
## Пункт 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
>>> math.sin(1565)
0.46785173260407253
>>> math.log10(200)
2.3010299956639813
>>> math.sqrt(36)
6.0
>>> 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
>>> 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.
>>> help(random.seed())
Help on NoneType object:
class NoneType(object)
| Methods defined here:
|
| __bool__(self, /)
| True if self else False
|
| __repr__(self, /)
| Return repr(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
>>> random.seed()
>>> random.random()
0.23882613686570964
>>> random.uniform(0,1)
0.3999614707805891
>>> random.randint(0,100)
6
>>> random.gauss(2, 10)
5.707349953271636
>>> random.choice([1,2,3,4,5])
2
>>> sp = [1,2,3,4,5,6,7,8,9,10,11]
>>> random.shuffle(sp)
>>> sp
[11, 7, 5, 3, 2, 10, 9, 8, 1, 6, 4]
>>> random.sample(sp,3)
[5, 10, 3]
>>> random.betavariate(0.7,0.7)
0.7563022719328397
>>> random.gammavariate(0.89,0.89)
0.5554159983098497
>>> sp1=[random.random(), random.gauss(0.5,0.5), random.betavariate(0.5,0.5), random.gammavariate(0.5, 0.5)]
>>> sp1
[0.3367662138533899, 0.25139981537793343, 0.6382522055172093, 0.7493560082921834]
```
## Пункт 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']
>>> c1=time.time()
>>> c2 = time.time() - c1
>>> c2
8.849342107772827
>>> data = time.gmtime()
>>> data.tm_mon
10
>>> data1 = time.localtime()
>>> data1.tm_year
2025
>>> time.asctime(data)
'Mon Oct 13 01:26:52 2025'
>>> time.ctime(123461273)
'Fri Nov 30 01:47:53 1973'
>>> time.mktime(data1)
1760318835.0
>>> time.localtime(c1)
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=4, tm_min=26, tm_sec=23, tm_wday=0, tm_yday=286, tm_isdst=0)
>>> time.localtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=4, tm_min=28, tm_sec=59, tm_wday=0, tm_yday=286, tm_isdst=0)
>>>
```
## Пункт 7. Модуль Pylab
```py
>>> import pylab
>>> x = list(range(-3,55,4))
>>> t = list(range(15))
>>> pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x0000020E0362C670>]
>>> pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
>>> pylab.xlabel("Время")
Text(0.5, 0, 'Время')
>>> pylab.ylabel("Сигнал")
Text(0, 0.5, 'Сигнал')
>>> pylab.show()
```
![График 1](1.png)
```py
>>> X1 = [12,6,8,10,7]
>>> X2 = [5,7,9,11,13]
>>> pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000020E01DF7E20>]
>>> pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000020E01E05100>]
>>> pylab.show()
```
![График 2](2.png)
```py
>>> pylab.show()
>>> region=["Центр", "Урал", "Сибирь", "Юг"]
>>> naselen = [65,12,23,17]
>>> pylab.pie(naselen,labels = region)
([<matplotlib.patches.Wedge object at 0x0000020E01FCA910>, <matplotlib.patches.Wedge object at 0x0000020E01FCA850>, <matplotlib.patches.Wedge object at 0x0000020E01FE2250>, <matplotlib.patches.Wedge object at 0x0000020E01FE26D0>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
>>> pylab.show()
```
![Диаграмма круговая](Ris2.png)
```py
>>> pylab.hist(X2,5)
(array([1., 1., 1., 1., 1.]), array([ 5. , 6.6, 8.2, 9.8, 11.4, 13. ]), <BarContainer object of 5 artists>)
>>> pylab.show()
>>> pylab.hist(X1,3)
(array([2., 1., 2.]), array([ 6., 8., 10., 12.]), <BarContainer object of 3 artists>)
>>> pylab.show()
```
![Гистограмма 1](hist1.png)
![Гистограмма 2](hist2.png)
```py
>>> pylab.bar(X1,X2)
<BarContainer object of 5 artists>
>>> pylab.show()
```
![Столбиковая диаграмма](bar.png)
## Пункт 8. Модуль statistics
```py
>>> import statistics as stat
>>> dir(stat)
['Counter', 'Decimal', 'Fraction', 'NormalDist', 'StatisticsError', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_exact_ratio', '_fail_neg', '_find_lteq', '_find_rteq', '_isfinite', '_normal_dist_inv_cdf', '_ss', '_sum', 'bisect_left', 'bisect_right', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'itemgetter', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'multimode', 'numbers', 'pstdev', 'pvariance', 'quantiles', 'random', 'sqrt', 'stdev', 'tau', 'variance']
>>> stattest = [1,2,65,7,4,32,1,15,45]
>>> stat.median(stattest)
7
>>> stat.mode(stattest)
1
>>> stat.mean(stattest)
19.11111111111111
>>> stat.quantiles(stattest)
[1.5, 7.0, 38.5]
>>>
```
## Общее контрольное задание
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```py
>>> divmod(((round(cmath.phase(0.2+0.8j),2))*20),3)
(8.0, 2.6000000000000014)
>>> tt = time.localtime()
>>> str(tt.tm_hour) + ":" + str(tt.tm_min)
'4:48'
>>> days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
>>> random.sample(days,3)
['Wed', 'Tue', 'Thu']
>>> random.choice(range(14,32,3))
17
>>> round(random.gauss(15,4))
16
>>> random.sample(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'], round(random.gauss(15,4)))
['c', 't', 'n', 'q', 'p', 'x', 'o', 'y', 'v', 'a', 'i', 'r', 'd']
>>> (time.time() - time.mktime(tt))/60
5.181675366560618
>>>
```

@ -0,0 +1,27 @@
## Индивидуальное задание по Теме 4.
Савин Семён, А-02-23
## Вариант 13. Задание
Зафиксируйте текущее Московское время и запишите его в переменную. Создайте список с элементами, равномерно размещенными в диапазоне от 0 до 240 с шагом, равным значению часа в текущем времени. Подсчитайте число элементов в списке. Сделайте задержку исполнения программы на 7 сек. Выведите на экран сообщение: «Число элементов =<значение>».
## Решение
```py
data1 = time.localtime()
data1
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=14, tm_min=5, tm_sec=20, tm_wday=0, tm_yday=286, tm_isdst=0)
data1
hour = data1.tm_hour
hour
14
rangetest = range(0,241,hour)
rangetest
range(0, 241, 14)
rangelist = list(rangetest)
rangelist
[0, 14, 28, 42, 56, 70, 84, 98, 112, 126, 140, 154, 168, 182, 196, 210, 224, 238]
time.sleep(7); print('число элементов = ', len(rangelist))
число элементов = 18
```
Загрузка…
Отмена
Сохранить