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

...

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

Автор SHA1 Сообщение Дата
EfremovSI f43cd6d7d6 Изменил(а) на 'TEMA4/test.md'
2 недель назад
EfremovSI a80996500c ikz
2 недель назад
EfremovSI 3bbde25280 Изменил(а) на 'TEMA4/task.md'
2 недель назад
EfremovSI f53475df09 Изменил(а) на 'TEMA4/task.md'
2 недель назад
EfremovSI f8130baace Изменил(а) на 'TEMA4/report.md'
2 недель назад
EfremovSI 9dd0bcc7e4 Изменил(а) на 'TEMA4/task.md'
2 недель назад
EfremovSI c0fddb26aa Изменил(а) на 'TEMA4/report.md'
2 недель назад
EfremovSI dbf5fa0aa7 okz
2 недель назад
EfremovSI 9d906b2707 Изменил(а) на 'TEMA4/report.md'
2 недель назад
EfremovSI 3e7e9e4bc6 pravki
2 недель назад
EfremovSI 43e226f93a Создал(а) 'TEMA4/report.md'
2 недель назад
EfremovSI e82bee0798 screenshots
2 недель назад
EfremovSI 862caafb63 Удалить 'TEMA4/screenshots'
2 недель назад
EfremovSI fb180d2801 Создал(а) 'TEMA4/screenshots'
2 недель назад
EfremovSI 8e9ad72b9e Удалить 'TEMA4/screenshots'
2 недель назад
EfremovSI bb7f2300e8 Создал(а) 'TEMA4/screenshots'
2 недель назад
EfremovSI 33243b12e3 test
4 недель назад
EfremovSI f2521e7d6f report: правки
4 недель назад
EfremovSI 2b1731cd13 task commit
4 недель назад
EfremovSI 5e8ca2bb95 task
4 недель назад
EfremovSI 0ed8b284a4 Изменил(а) на 'TEMA2/test.md'
1 месяц назад
EfremovSI a575ca48f6 ИКЗ
1 месяц назад
EfremovSI d90e52ca71 Изменил(а) на 'TEMA1/test.md'
1 месяц назад
EfremovSI d07e8a5160 Изменил(а) на 'TEMA1/test.md'
1 месяц назад
EfremovSI d05b50ce9c ИКЗ: добавлен
1 месяц назад
EfremovSI 04ad8bddc1 report: правка
1 месяц назад
EfremovSI d8500b559d report: дополнен полный отчёт
2 месяцев назад
EfremovSI e2ff24dcb8 report: дополнен до пункта 8 (доделать ????)
2 месяцев назад
EfremovSI 7687605994 report: оформлен до пункта 2.3.
2 месяцев назад
EfremovSI 6ad00aa021 task: добавлено ОКЗ
2 месяцев назад
EfremovSI 49cdddbc29 report: дополнен до пункта 9
2 месяцев назад
EfremovSI ea77f9aecc report: дополнен до пункта 8.1
2 месяцев назад
EfremovSI 52ea045d77 report: дополнен до 7.2 пункта
2 месяцев назад
Пользователь № 17 аудитории К-522 521f50c1bd 100000002' commit
2 месяцев назад
Пользователь № 17 аудитории К-522 6c1db3c319 100000001' commit
2 месяцев назад
Пользователь № 17 аудитории К-522 35d898d69f 10000000' commit
2 месяцев назад
Пользователь № 17 аудитории К-522 98cd4b6c07 100000' commit
2 месяцев назад
Пользователь № 17 аудитории К-522 11f7111e58 10000' commit
2 месяцев назад
Пользователь № 17 аудитории К-522 45011654f1 8' commit
2 месяцев назад
Пользователь № 17 аудитории К-522 3bafa54258 8' commit
2 месяцев назад
Пользователь № 17 аудитории К-522 4e21c2e7a4 6' commit
2 месяцев назад
Пользователь № 17 аудитории К-522 e46abf35e0 6' commit
2 месяцев назад
Пользователь № 17 аудитории К-522 f657cbaa5b 5' commit
2 месяцев назад
Пользователь № 17 аудитории К-522 2c7ead240d 4' commit
2 месяцев назад
Пользователь № 17 аудитории К-522 4fe951ece2 third commit
2 месяцев назад
Пользователь № 17 аудитории К-522 67620ad056 second commit
2 месяцев назад
Пользователь № 17 аудитории К-522 248bd5a980 first commit
2 месяцев назад

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

@ -0,0 +1,5 @@
#Программа по Теме 1 <Ефремов Станислав>
print('Hello')
h=input('Your name=')
import os
os.chdir('C:\\Users\\u522-17\\Desktop\\python-labs\\TEMA1\\')

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

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

После

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

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

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

После

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

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

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

После

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

@ -0,0 +1,25 @@
#Протокол по Теме 1 <Ефремов Станислав>
Python 3.11.5 (tags/v3.11.5:cce6ba9, Aug 24 2023, 14:38:34) [MSC v.1936 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
import os
os.chdir('<C:\Users\u522-17\Desktop\python-labs\TEMA1>\\Tema1\\')
SyntaxError: incomplete input
os.chdir('<C:\Users\u522-17\Desktop\python-labs\TEMA1>\\Tema1\\')
SyntaxError: incomplete input
os.chdir('<C:\\Users\\u522-17\\Desktop\\python-labs\\TEMA1\\')
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
os.chdir('<C:\\Users\\u522-17\\Desktop\\python-labs\\TEMA1\\')
OSError: [WinError 123] Синтаксическая ошибка в имени файла, имени папки или метке тома: '<C:\\Users\\u522-17\\Desktop\\python-labs\\TEMA1\\'
os.chdir('C:\\Users\\u522-17\\Desktop\\python-labs\\TEMA1\\')
========== RESTART: C:/Users/u522-17/Desktop/python-labs/TEMA1/Pr0.py ==========
Hello
Your name=Stas
import Pr0
Hello
Your name=stas
import prb1
Как Вас зовут? Стас
Привет, Стас

@ -0,0 +1,130 @@
# Отчет по теме 1
Ефремов Станислав, А-02-23
## 1-2. Запуск
Была запущена программа-интерпретатор:
![Python 3.11(command line)](POKAZAL.png)
## 3-5. Диалоговое окно
Были введены несколько инструкций в диалоговое окно интерпретатора:
```py
print('hello')
hello
h=input('Your name=')
Your name=stasyan
exit() - закрывает интерпретатор
```
## 6-7. Интерактивная графическая оболочка
![IDLE Python](GRAPH.png)
было изучено устройство главного командного окна среды.
## 8. Настройка рабочего каталога.
```py
import os
os.chdir('C:\\Users\\u522-17\\Desktop\\python-labs\\TEMA1\\')
```
## 9. Персонализация среды.
![](ARIAL.png)
![](COMMENTS.png)
## 10. Окно редактора
Воспользовались окном редактора для написания кода, результат:
========== RESTART: C:/Users/u522-17/Desktop/python-labs/TEMA1/Pr0.py ==========
Hello
Your name=Stas
![Окно редактора с инструкцией](KOD.png)
### Были использованы следующие методы запуска инструкций:
1) Меню редактора: Run module
2) Кнопка F5
3) Команда import Pr0
## 11. Запуск prb1
import prb1
Как Вас зовут? Стас
Привет, Стас
## 12-13. Просмотр pycache
![](CACH1.png)
## 14. Вызов раздела помощи
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.
Также были рассмотрены другие способы получения раздела помощи.
## 15. Перемещение между окнами
### 15.1 Открыт prb1.py
### 15.2 Перемещение меж окнами
### 15.3 Запуск программы из окна редактора:
================ RESTART: C:\Users\u522-17\Desktop\python-labs\TEMA1\prb1.py ===============
Как Вас зовут? стас
Привет, стас
### 15.4 Была запущена программа tdemo_chaos
![](chaos.png)
### 15.5 Рассмотрение примеров использования графической составляющией среды Python
![](clock.png)
Данные примеры способны помочь в плане структуризации собственного кода и изучении новых команд.
## 16. Выход из среды

@ -0,0 +1,17 @@
# Индивидуальное контрольное задание по теме 1
Ефремов Станислав, А-02-23
## Вопрос
Если вы начали работу на новом для вас компьютере с предустановленной средой Python, на что надо обратить внимание после запуска интерактивной оболочки?
## Ответ
1) Какая версия Python была предустановлена ?
2) Куда была установлена среда?
3) Установлены ли нужные модули для работы со средой?
4) Откуда ведется импорт модулей (PATH)?

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

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

После

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

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

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

После

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

Двоичные данные
TEMA2/abs.png

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

После

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

Двоичные данные
TEMA2/len.png

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

После

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

@ -0,0 +1,705 @@
# Отчет по теме 2
Ефремов Станислав, А-02-23
## 1. Запуск.
### 1.1 Запуск оболочки IDLE и установка рабочего каталога.
```py
import os
os.chdir('C:\Program Files (x86)\учёха 3 курс\pythonsky\python-labs\TEMA2')
```
![](1.png)
## 2. Изучение простых объектов.
### 2.1 Операции присваивания
```py
f1=16; f2=3
f1,f2
(16, 3)
f1;f2
16
3
```
### 2.2 Функционал команд dir(), type() и del:
Был получен список атрибутов объекта f1:
```py
dir(f1)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__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_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'is_integer', 'numerator', 'real', 'to_bytes']
```
Также была определена классовая принадлежность объекта f2:
```py
type(f2)
<class 'int'>
```
Команда del отвечает за удаление объекта или его части из ОП.
```py
del f1, f2
f1, f2
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
f1, f2
NameError: name 'f1' is not defined
```
## 3-4. Правила именования и сохранение списка под именем:
Были введены некоторые предложенные команды, две из которых не соответствовали правилам именования:
![](2.png)
```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']
```
В данном случае полученному списку было присвоено следующее имя:
```py
ara = keyword.kwlist
ara
['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. Встроенные идентификаторы.
### 5.1 Вывод списка встроенных идентификаторов:
```py
import builtins
dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
```
### 5.2 Изучение назначения функций:
#### 5.2.1 Функция ABS:
![](abs.png)
#### 5.2.2 Функция len:
![](len.png)
#### 5.2.3 Функция max
```py
help(max)
Help on built-in function max in module builtins:
max(...)
max(iterable, *[, default=obj, key=func]) -> value
.......
With two or more positional arguments, return the largest argument.
max(numbers)
3
```
#### 5.2.4 Функция min
```py
help(min)
Help on built-in function min in module builtins:
min(...)
min(iterable, *[, default=obj, key=func]) -> value
............
With two or more positional arguments, return the smallest argument.
min(numbers)
1
```
#### 5.2.5 Функция pow
```py
help(pow)
Help on built-in function pow in module builtins:
pow(base, exp, mod=None)
...........
invoked using the three argument form.
pow(3, 2)
9
```
#### 5.2.6 Функция 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.
round(1.5)
2
```
#### 5.2.7 Функция sorted
```py
help (sorted)
Help on built-in function sorted in module builtins:
sorted(iterable, /, *, key=None, reverse=False)
Return a new list containing all items from the iterable in ascending order.
A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.
num = [3, 1, 2]
sorted(num)
[1, 2, 3]
```
#### 5.2.8 Функция sum
```py
help(sum)
Help on built-in function sum in module builtins:
sum(iterable, /, start=0)
Return the sum of a 'start' value (default: 0) plus an iterable of numbers
When the iterable is empty, return the start value.
This function is intended specifically for use with numeric values and may
reject non-numeric types.
sum(num)
6
```
#### 5.2.9 Функция zip
```py
help(zip)
Help on class zip in module builtins:
class zip(object)
| zip(*iterables, strict=False)
|
| The zip object yields n-length tuples, where n is the number of iterables
| passed as positional arguments to zip(). The i-th element in every tuple
| comes from the i-th iterable argument to zip(). This continues until the
...........................................
num
[3, 1, 2]
numbers
[1, 2, 3]
j = zip(num, numbers)
j
<zip object at 0x000001E309D6DD00>
zip_list = list(j)
zip_list
[(3, 1), (1, 2), (2, 3)]
```
## 6-7. Типы объектов.
### 6. Проверка влияния больших и маленьких букв в имени переменных:
```py
Gg1=45
gg1
1.6
Gg1
45
```
### 7. Изучение базовых типов объектов:
int — целые числа (положительные, отрицательные или нуль).
float — числа с плавающей точкой (дробные числа).
complex — комплексные числа (имеют действительную и мнимую части).
str — строковый тип данных для хранения текстовой информации. Строка может содержать буквы, цифры, пробелы, символы.
bool в Python — это логический тип, принимать только два значения: True и False.
#### 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'>
```
Как можем заметить - двоичное число 0b1101010 в Python сохраняется в объекте класса int.
```py
vsm1=0o52765
type(vsm1)
<class 'int'>
```
```py
shest1=0x7109af6
type(shest1)
<class 'int'>
cc1=2-3j
type(cc1)
<class 'complex'>
```
Ниже представлен иной способ создания комплексного числа:
```py
a=3.67; b=-0.45
cc2=complex(a,b)
type(cc2)
<class 'complex'>
```
#### 7.3 Строка символом:
Строки выделяются как и апострофами, так и двойными кавычками, продемонстрируем:
```py
ss1='Это - строка символов'
ss1="Это - строка символов"
```
##### Экранированные последовательности:
```py
ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
print(ss1a)
```
Создадим строку по шаблону:
```py
ss1b= 'Меня зовут: \n Ефремов С.И.'
print(ss1b)
Меня зовут:
Ефремов С.И.
```
Создадим строку со значением объекта при помощи тройных кавычек:
```py
mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции."""
print(mnogo)
Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.
```
```py
ss1[0]
'Э'
ss1[8]
'р'
ss1[-2]
'о'
ss1[0]
'Э'
ss1[8]
'р'
ss1[-2]
'о'
ss1[6:9]
'стр'
ss1[13:]
'символов'
ss1[:13]
'Это - строка '
ss1[5:-8]
' строка '
ss1[3:17:2]
' тоасм'
```
Важно заметить, что цифра '2' здесь отвечает за шаг.
Здесь, подобно примеру выше, мы перечислили элементы с индексами от 3 до 17, но в обратном порядке (с положительным шагом перечисление элементов в обратную сторону работать не будет).
```py
ss1[17:3:-2]
'омсаот '
```
Изменив '17' на '-4' мы получим тот же результат, ведь два этих индекса соответствуют одному и тому же элементу строки.
```py
ss1[-4:3:-2]
'омсаот '
```
Таким образом, мы переопределили элемент под индексом 4.
```py
ss1=ss1[:4]+'='+ss1[5:]
ss1
'Это = строка символов'
```
```py
ss1b1 = ss1b[:3]; print(ss1b1)
Мен
ss1b2 = ss1b[:10]+' - \n'+ss1bpetr
print(ss1b2)
Меня зовут -
Петр Мамонов
```
## 8. Списки, кортежи, словари и множества.
```py
help(list)
Help on class list in module builtins:
class list(object)
| list(iterable=(), /)
|
| Built-in mutable sequence.
|
| If no argument is given, the constructor creates a new empty list.
| The argument must be an iterable if specified.
help(tuple)
Help on class tuple in module builtins:
class tuple(object)
| tuple(iterable=(), /)
|
| Built-in immutable sequence.
|
| If no argument is given, the constructor returns an empty tuple.
| If iterable is specified the tuple is initialized from iterable's items.
|
| If the argument is a tuple, the return value is the same object.
|
| Built-in subclasses:
| asyncgen_hooks
| UnraisableHookArgs
help(dict)
Help on class dict in module builtins:
class dict(object)
| dict() -> new empty dictionary
| dict(mapping) -> new dictionary initialized from a mapping object's
| (key, value) pairs
| dict(iterable) -> new dictionary initialized as if via:
| d = {}
| for k, v in iterable:
| d[k] = v
| dict(**kwargs) -> new dictionary initialized with the name=value pairs
| in the keyword argument list. For example: dict(one=1, two=2)
help(set)
Help on class set in module builtins:
class set(object)
| set(iterable=(), /)
|
| Build an unordered collection of unique elements.
```
### 8.1 Работа со списками.
Список может содержать в себе элементы разных типов.
```py
spis1=[111,'Spisok',5-9j]
spis1
[111, 'Spisok', (5-9j)]
```
Ввод можно производить в разных строках, пока не будет введена квадратная скобка.
```py
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]
```
'-8' - есть элемент под индексом 1 в исходном списке, между :: ничего нет, значит срез произойдёт до самого последнего элемента, а '2' - есть шаг пересчёта элементов.
```py
spis1[-1]
(5-9j)
stup[-8::2]
[0, 1, 1, 1]
```
```py
spis1[1]='Список'
spis1
[111, 'Список', (5-9j)]
len(spis1)
3
```
С помощью '.append' можно добавить какой-либо элемент в список, а '.pop' - удалить.
```py
spis1.append('компиш')
spis1
[111, 'Список', (5-9j), 'компиш']
spis1.append(ss1b)
spis1
[111, 'Spisok', (5-9j), 'компиш', 'Меня зовут: \n Ефремов С.И.']
spis1.pop(1)
'Spisok'
spis1
[111, (5-9j), 'компиш', 'Меня зовут: \n Ефремов С.И.']
```
```py
spis1.insert(1, 'пицца') вставит второй аргумент под номер индекса элемента.
spis1
[111, 'пицца', (5-9j), 'компиш', 'Меня зовут: \n Ефремов С.И.']
spis1.remove('пицца') - удалит тот элемент, который полностью соответствует указанному в команде аргументу.
spis1
[111, (5-9j), 'компиш', 'Меня зовут: \n Ефремов С.И.']
spis1.extend('5-9') - добавит каждый элемент аргумента в конце списка.
spis1
[111, (5-9j), 'компиш', 'Меня зовут: \n Ефремов С.И.', 'к', 'о', 'м', 'п', 'и', 'ш', '5', '-', '9']
spis1.clear() - удаляет все элементы из списка.
spis1
[]
spis1
[5, 3, 2, 1, 7, 6, 9]
spis1.sort() - сортировка списка как и по числам*
spis1
[1, 2, 3, 5, 6, 7, 9]
spisbukva = ['b', 'a', 'c', 'g', 't']
spisbukva.sort() - *так и по алфавиту
spisbukva
['a', 'b', 'c', 'g', 't']
spisbukva.reverse() - перемешивает элементы в обратном порядке
spisbukva
['t', 'g', 'c', 'b', 'a']
spis1
[1, 2, 3, 5, 6, 7, 9]
spis111 = spis1.copy() - копирует список.
spis111
[1, 2, 3, 5, 6, 7, 9]
spis1
[1, 2, 3, 5, 6, 7, 9]
spis1.count(5) - считает то, сколько раз элемент из аргумента появляется в списке.
1
spis1.index(9) - возвращает индекс элемента, совпадающего по значению с аргументом.
6
```
```py
spis2=[spis1, [4,5,6,7]] - элементы переменной - два списка
spis2
[[1, 2, 3, 5, 6, 7, 9], [4, 5, 6, 7]]
spis2[0][1] - обращение ко второму элементу первого списка
2
spis2[0][1]=78 - замена значения того же элемента на другое
spis2
[[1, 78, 3, 5, 6, 7, 9], [4, 5, 6, 7]]
spis1
[1, 78, 3, 5, 6, 7, 9] - был видоизменен, ведь является элементом другого списка, к которому мы обратились и изменили соответственно.
```
#### Был придуман список, содержащий в себе 4 элемента разных типов: число, строка, логическое значение и список.
```py
list = ['glad', 18, True, ['a','b','c','d']]
list
['glad', 18, True, ['a', 'b', 'c', 'd']]
type(list)
<class 'list'>
```
### 8.2 Кортеж.
*Похож на список, но изменить его нельзя
```py
kort1=(222,'Kortezh',77+8j)
type(kort1)
<class 'tuple'>
kort1[2] = 90
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
kort1[2] = 90
TypeError: 'tuple' object does not support item assignment
```
Однако можно переопределить (добавить или удалить определенные элементы).
```py
kort1= kort1+(1,2) - добавление
kort1
(222, 'Kortezh', (77+8j), 1, 2)
kort2=kort1[:2]+kort1[3:] - удаление
kort2
(222, 'Kortezh', 1, 2)
```
Определение индекса и подсчёт заданного элемента:
```py
kort1.index(2)
4
kort1
(222, 'Kortezh', (77+8j), 1, 2)
kort1.count(222)
1
```
### 8.3 Словарь
-Является совокупностью пар типа 'key:value'
```py
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
dic1['Saratov']
145
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}
```
```py
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'
```
```py
dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
dic4
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня зовут: Ефремов С.И.'}
dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
dic5
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут: Ефремов С.И.'}
```
```py
tupl3 = ('A', 'B', 'C', 'D', 'E', 'F','G')
l1st = ['1', '2', '3', '4', '5']
dict227 = dict(zip(tupl3,l1st))
dict227
{'A': '1', 'B': '2', 'C': '3', 'D': '4', 'E': '5'}
len(dict227)
5 - элеменов получится пять, ведь команда zip работала столько раз, сколько элементов в наиболее маленьком объекте
```
```py
AVTI={'Курс I':[22,23,17,24,30,29,28,25,23,0,4,31,30,33,18,12,27],'Курс II':[18,16,12,15,29,18,21,23,13,0,4,20,31,26,16,], 'Курс III':[17,12,0,6,17,15,19,19,0,0,5,17,22,18,12], 'Курс IV':[27,16,0,13,17,15,19,20,0,0,2,15,18,16,17]}
AVTI['Курс III'][5]
15
```
### 8.4 Множество
-типы разные или одинаковые, но только неизменяемые и неповторяющиеся.
```py
mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
print(mnoz1)
{'двигатель', 'датчик', 'микропроцессор', 'линия связи'}
len(mnoz1)
4
```
Некоторые операции во множестве:
```py
'датчик' in mnoz1
True
mnoz1.add('реле')
print(mnoz1)
{'двигатель', 'датчик', 'линия связи', 'микропроцессор', 'реле'}
mnoz1.remove('линия связи')
print(mnoz1)
{'двигатель', 'датчик', 'микропроцессор', 'реле'}
```
Было создано множество:
```py
mnoz1 = {'лев', '1', True, ('тигр', 1, 3)}
mnoz1
{'1', True, 'лев', ('тигр', 1, 3)}
mnoz1.remove(True)
mnoz1
{'1', 'лев', ('тигр', 1, 3)}
mnoz1.add('черный')
mnoz1
{('тигр', 1, 3), 'лев', '1', 'черный'}
```
## 9.
exit()

@ -0,0 +1,47 @@
# Общее контрольное задание по теме 2
Ефремов Станислав, А-02-23
## Задание
• Создать переменную с именем familia и со значением - символьной строкой – своей фами-лией в латинской транскрипции.
• Создать переменную со значением, совпадающим с первой буквой из familia.
• Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
• Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
• Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите
инструкцию, позволяющую убедиться, что тип переменной – это tuple.
• Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
• Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
• Создайте словарь dict_bas, в котором ключами являются русские названия типов перемен-ных, использованных в предыдущих операторах, а значениями – ранее созданные пере-менные, соответствующие этим типам.
## Решение
```py
>>> familia = 'Efremov'
>>> bukva = familia[0]
>>> import keyword
>>> sp_kw = keyword.kwlist
>>> sp_kw.remove('nonlocal')
>>> print(sp_kw)
['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', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
>>> print(sp_kw.count('nonlocal'))
0
>>> kort_nam = ('Stas', 'Liza', 'Andrew', 'Zhenya')
>>> print(type(kort_nam))
<class 'tuple'>
>>> kort_nam = kort_nam + ('Denis', 'Alena')
>>> print(kort_nam.count('Dima'))
0
>>> key = ['str', 'list', 'tuple']
>>> value = ['familia', 'sp_kw', 'kort_nam']
>>> dict_bas = dict(zip(key, value))
>>> print(dict_bas)
{'str': 'familia', 'list': 'sp_kw', 'tuple': 'kort_nam'}
```

@ -0,0 +1,15 @@
familia = 'Efremov'
bukva = familia[0]
import keyword
sp_kw = keyword.kwlist
sp_kw.remove('nonlocal')
print(sp_kw)
print(sp_kw.count('nonlocal'))
kort_nam = ('Stas', 'Liza', 'Andrew', 'Zhenya')
print(type(kort_nam))
kort_nam = kort_nam + ('Denis', 'Alena')
print(kort_nam.count('Dima'))
key = ['str', 'list', 'tuple']
value = ['familia', 'sp_kw', 'kort_nam']
dict_bas = dict(zip(key, value))
print(dict_bas)

@ -0,0 +1,19 @@
# Индивидуальное контрольное задание по теме 2
Ефремов Станислав, А-02-23
## Задание
Создайте два списка: один – с фамилиями 3-х студентов вашей группы, другой – с 5 числами: 11,12,13,14,15. Напишите инструкцию создания словаря, в котором фамилии студентов были бы ключами, а числа – значениями. Отобразите получившийся словарь. Отобразите его ключи с упорядочением по фамилиям студентов.
## Решение
```py
>>> vvv = ['Хатюхин', 'Шабатов', 'Туровец']
>>> ch = [11,12,13,14,15]
>>> slovar = dict(zip(vvv,ch))
>>> print(slovar)
{'Хатюхин': 11, 'Шабатов': 12, 'Туровец': 13}
>>> sorted(slovar.keys())
['Туровец', 'Хатюхин', 'Шабатов']
```

@ -0,0 +1,726 @@
# Отчет по теме 3
Ефремов Станислав, А-02-23
## 1. Запуск.
### 1.1 Запуск оболочки IDLE и установка рабочего каталога.
```py
import os
os.chdir('C:\Program Files (x86)\учёха 3 курс\pythonsky\python-labs\TEMA3')
```
## 2. Преобразование простых базовых типов объектов.
### 2.1 Логический тип.
```py
logiz2 = bool(0)
logiz1 = bool(56)
logiz3=bool("Beta")
logiz4=bool("")
```
### 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#19>", line 1, in <module>
tt5=int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'
```
Значение tt5 не может быть преобразовано командой вида int(), т.к. хоть и представлено в виде строки, но всё равно относится к вещественным числам.
#### Преобразование с помощью функции float
```py
>>> flt1=float(789)
>>> flt1
789.0
>>> flt2=float(-6.78e2)
>>> flt2
-678.0
>>> flt3=float("Infinity")
>>> flt3
inf
>>> flt4=float("-inf")
>>> flt4
-inf
```
### 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 Преобразование в строку символов
```py
>>>strk1=str(23.6)
>>>strk1
'23.6'
>>>strk2=str(logiz3)
>>>strk2
'True'
>>>strk3=str(["A","B","C"]) - #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']
>>> spis3=list({"A":1,"B":2,"C":9}.values()) #вывод значений списка
>>> spis3
[1, 2, 9]
>>> spis3=list({"A":1,"B":2,"C":9}.items()) #вывод ключей-значений
>>> spis3
```
### 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')
### 3.4 Очистка оперативной памяти
```py
>>> del kort8
>>> kort8
Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
kort8
NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
```
```py
>>> fam = ('Efremov S.I')
>>> spisfam = spis(fam)
>>> spisfam = list(fam)
>>> kortfam = tuple(spisfam)
>>> strfam = str(kortfam)
>>> strfam
"('E', 'f', 'r', 'e', 'm', 'o', 'v', ' ', 'S', '.', 'I')"
>>> type(strfam)
<class 'str'>
```
## 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
>>> type(a)
<class 'float'>
```
Тип полученной переменной является вещественным.
### 4.4. Округление вниз(//).
```py
>>> b=178//45
>>> c=-24.6//12.1
>>> type(b)
<class 'int'>
>>> type(c)
<class 'float'>
>>> b
3
>>> c
-3.0
d = 24.6//3
type(d)
<class 'float'>
d = 24//3.6
type(d)
<class 'float'>
```
Переменная приобретает вещественный тип, если при операции деления есть хотя бы одно вещественное значение.
### 4.5. Остаток от деления:
```py
>>> 148%33
16
>>> 12.6%3.8
1.2000000000000002
>>> 148.3%33
16.30000000000001
>>> 148%33.3
14.800000000000011
```
### 4.6. Возведение в степень:
```py
>>> 14**3
2744
>>> e=2.7**3.6
>>> e
35.719843790663525
```
#### Повторим предложенные операции, но уже с комплексными числами:
```py
>>> po = 10 + 10j
>>> ac = 20 + 20j
>>> po + ac
(30+30j)
>>> po - ac
(-10-10j)
>>> po * ac
400j
po / ac
(0.5+0j)
po//ac
Traceback (most recent call last):
File "<pyshell#33>", line 1, in <module>
po//ac
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
po%ac
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
po%ac
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
po**ac
(1.4066000837528672e+16-6347426866104395j)
```
Важно заметить, что операции деления с округлением вниз и определения остатка провести нельзя!
## 5. Двоичное представление чисел.
### 5.1. Двойная инверсия
```py
>>>dv1=9
>>>dv2=~dv1
>>>dv2
-10
```
### 5.2. Двоичное 'И'.
```py
>>>7&9
1
>>>7&8
0
```
### 5.3. Двоичное "ИЛИ"
```py
>>>7|9
15
>>>7|8
15
>>>14|5
15
```
### 5.4 Двоичное исключающее "ИЛИ"
```py
>>>14^5
11 #десятичное
>>> bin(11)
'0b1011' #двоичное
```
### 5.5 Сдвиг двоичного представления влево и вправо.
```py
>>>h=14
>>>g=h<<2
>>>g
56
>>>g1=h>>1
>>>g1
7
>>>g2=h>>2
>>>g2
3
```
### 5.6. Действия с двумя двоичными числами
```py
a = 0b10110101
b = 0b01101011
c=~a
bin(c)
'-0b10110110'
bin(a&b)
'0b100001'
bin(a|b)
'0b11111111'
bin(a^b)
'0b11011110'
d=a<<2
bin(d)
'0b1011010100'
e=b>>2
bin(e)
'0b11010'
```
## 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 #Повторение строки 5 раз
'ля-ля-ля-ля-ля-'
>>>['ку','-']*3 #Повторение списка 3 раза
['ку', '-', 'ку', '-', 'ку', '-']
>>>('кис','-')*4 #Повторение кортежа 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 % (16,' меньше ',25)
'Температура = 16 меньше 25'
>>>stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
>>>stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
## 7. Изучение оператора присваивания.
### 7.1 - 7.3. Обычное присваивание, увеличение, умножение и деление соответственно.
```py
>>> zz=-12
>>> zz+=5
>>> zz
-7
>>> zz-=3
>>> zz
-10
>>> stroka='Система'
>>> stroka+=' регулирования'
>>> stroka
'Система регулирования'
>>> zz/=2 #деление на текущую величину
>>> zz*=5
>>> zz
-25.0
>>> zzz = 12
>>> zzz *=12 #повторение
>>> zzz
144
```
### 7.4. Деление с округлением вниз, остаток от деления и возведение в степень.
```py
>>> chislo = 10
>>> chislo //=5
>>> chislo
2
>>> chislo = 10
>>> chislo %=3
>>> chislo
1
>>> chislo = 10
>>> chislo **=2
>>> chislo
100
```
### 7.5 Присваивание
```py
>>> w=v=10
>>> n1,n2,n3=(11,-3,'all')
>>> n1
11
>>> n2
-3
>>> n3
'all'
>>> w, v
(10, 10)
n1,n2,n3="all" #из строки
n1
'a'
n2
'l'
n3
'l'
n1,n2,n3=[11,-3,'all'] #из списка
n1
11
n2
-3
n3
'all'
n1,n2,n3 = {"a": 11, "b": -3, "c": "all"} #из словаря (ключи)
n1
'a'
n2
'b'
n3
'c'
r = {"a": 11, "b": -3, "c": "all"} #из словаря (значения)
n1,n2,n3 = r.values()
n1
11
n2
-3
n3
'all'
n1,n2,n3 = {11, -3, 'all'} #из множества(порядок не гарантирован)
n1
11
n2
-3
n3
'all'
```
## 8. Логические операции.
### 8.1. Операции сравнения:
```py
>>> w==v #равенство
True
>>> w!=v #неравенство
False
>>> 9<10 #меньше
True
>>> 9>10 #больше
False
>>> w<=v #меньше или равно
True
>>> w>=v #больше или равно
True
```
### 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
not (a==b) and not ('Moscow' in dic1) and not ('iPhone' in mnoz1)
False
not (a==b) and not ('Moscow' in dic1) and not ('XIAOMI' in mnoz1)
True
```
### 8.4. Ссылки переменных.
```py
>>> w=v=10
>>> w is v
True
>>> v is w
True
>>> w1=['A','B'];v1=['A','B']
>>> w1, v1
(['A', 'B'], ['A', 'B'])
>>> w1 is v1
False
>>> v1 is w1
False
```
А всё потому что оператор is проверяет, являются ли переменные одним и тем же объектом в памяти, а не то, одинаковые ли у них значения. Пример ниже:
```py
>>> v1 = w1
>>> v1 is w1
True
>>> w1=['A','B'];v1=['A','B']
>>> w1==v1
True
>>> w1 is v1
False
```
## 9. Методы.
Просмотрим список всех атрибутов объекта:
```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('пр')
5
>>> stroka.count("с")
4
>>> stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>> spis22=stroka.split(' ')
>>> spis22
['Микропроцессорная', 'система', 'управления']
>>> stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
>>> stroka3=" ".join(spis22)
>>> stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
```
#### Метод format.
```py
>>> 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 = ['kfc','mcdonalds','burgerking','teremok',20]
>>> type(spsk)
<class 'list'>
>>> dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__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']
>>> spsk.pop(2) #удаление элемента из списка
'burgerking'
>>> spsk
['kfc', 'mcdonalds', 'teremok', 20]
>>> spsk.append('c') #добавление нового элемента в конец списка
>>> spsk
['kfc', 'mcdonalds', 'teremok', 20, 'c']
>>> spsk.insert(2,'a') #добавление элемента на место под определенным индексом
>>> spsk
['kfc', 'mcdonalds', 'a', 'teremok', 20, 'c']
>>> spsk.count('a') #пересчёт элементов 'a' в списке
1
```
### 9.3. Методы кортежа.
```py
>>> kortezh = (1, 2, 3, 4)
>>> type(kortezh)
<class 'tuple'>
>>> dir(kortezh)
['__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']
>>> kortezh.count(1) #подсчёт элемента '1'
1
>>> kortezh.index(4) #выводит индекс заданного элемента
3
```
### 9.4 Методы словаря и кортежа.
#### Словарь.
```py
>>> slovar = {'A':1, 'B':2, 'C':3}
>>> type(slovar)
<class 'dict'>
d
>>> dir(slovar)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__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']
>>> slovar.pop('A') #удаление элемента
1
>>> slovar
{'B': 2, 'C': 3}
>>> slovar.items()
dict_items([('B', 2), ('C', 3)])
>>> slovar.keys()
dict_keys(['B', 'C'])
>>> slovar.values()
dict_values([2, 3])
#### Множество.
```py
>>> mno = {1, 2, 3, 4}
>>> type(mno)
<class 'set'>
>>> dir(mno)
['__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']
>>> mno.add(5) #добавление
>>> mno
{1, 2, 3, 4, 5}
>>> mno.remove(5) #удаление
>>> mno
{1, 2, 3, 4}
>>> mno.clear() #очищение
>>> mno
set()
```
## 10. Конец сеанса работы с IDLE.

@ -0,0 +1,78 @@
# Общее контрольное задание по теме 3
Ефремов Станислав, А-02-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
• Преобразовать восьмеричное значение 45 в целое число.
• Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?
• Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.
• Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
• Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.
• Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов.
• Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
## Решение
```py
>>>a = int("45", 8)
>>>a
37
>>>D={"усиление":23, "запаздывание":12, "постоянная времени":78}
>>>spis1=list(D)
>>>spis1
['усиление', 'запаздывание', 'постоянная времени']
>>>spis2=list(D.values())
>>>spis2
[23, 12, 78]
>>>kor=tuple(spis1)+tuple(spis2) #Список отличается от кортежа тем, что список изменяем, а кортеж нет.
>>>kor
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
>>>((1768//24.8)%3)**2.4
5.278031643091577
>>>((~(13&27))^14)<<2
-32
>>>spis3=["колебат", "колебат", "колебат", "колебат" ]
>>>'аткол' in spis3[1] + spis3[2]
True
>>>dir(D)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__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']
>>>help(D.keys)
Help on built-in function keys:
keys() method of builtins.dict instance
Return a set-like object providing a view on the dict's keys.
>>>help(D.values)
Help on built-in function values:
values() method of builtins.dict instance
Return an object providing a view on the dict's values.
>>>D.keys() #Этот метод отображает ключи словаря
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
>>>D.values() #Этот метод отображает знаечния словаря
dict_values([23, 12, 78])
>>>S="Создать объект - символьную строку с текстом данного предложения"
>>>L=list(S.split())
>>>L
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
>>>L[L.index("-")] = ","
>>>L
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
>>>L.remove("данного")
>>>L
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
```

@ -0,0 +1,50 @@
# Тест по модулю 1
Ефремов Станислав, А-02-23
## Задание
M1_6
1) Как расшифровывается аббревиатура IDLE? Какую роль играет эта компонента в среде программирования Python?
2) Создайте объект-словарь с 3 элементами, в которых ключами являются строки с названиями профессий, а значениями - списки с элементами: средняя зарплата по соответствующей профессии, вероятность устроиться на работу и возможность профессионального роста (логическое значение). Значения придумайте самостоятельно.
3) Создайте объект-строку с названием одной из профессий и напишите инструкцию, позволяющую для этого объекта определить из словаря список с ее характеристиками.
4) Напишите инструкцию, создающую на основе словаря список со значениями средних зарплат по представленным в словаре профессиям.
5) Напишите инструкцию, вычисляющую среднюю вероятность трудоустройства по представленным в словаре профессиям.
## Решение
1) IDLE - Integrated Development and Learning Environment. Роль заключается в том, чтобы использовать эту компоненту с целью обучения и разработки в среде Python.
2)
```py
>>> professia = {'программист':[5000,0.6,True], 'учитель':[35000,0.8,True], 'президент':[10000000, 0.1, False]}
```
3)
```py
>>> krasava = 'президент'
>>> print(professia[krasava])
[10000000, 0.1, False]
```
4)
```py
>>> cash = [professia['программист'][0], professia['учитель'][0], professia['президент'][0]]
>>> type(cash)
<class 'list'>
>>> cash
[5000, 35000, 10000000]
```
5)
```py
>>> prob = [professia['программист'][1], professia['учитель'][1], professia['президент'][1]]
>>> sred_prob = sum(prob)/len(prob)
>>> sred_prob
0.5
```

@ -0,0 +1,378 @@
# Отчёт по теме 4
Ефремов Станислав, А-02-23
## 2. Стандартные функции. Находятся в модуле builtins, который становится доступным без импорта при запуске среды IDLE.
### 2.1. Функция round – округление числа с заданной точностью.
```py
round(123.456,1)
123.5
round(123.456,0)
123.0
type(round(123.456,1))
<class 'float'>
type(round(123.456,0))
<class 'float'>
type(123.0)
<class 'float'>
type(123.5)
<class 'float'>
round(123.456)
123
type(123)
<class 'int'>
type(round)
<class 'builtin_function_or_method'>
```
### 2.2. Функция range – создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1.
```py
gg=range(76,123,9) #генерирует числа, начиная с 76 и прибавляя 9, пока не достигнет числа, которое больше или равно 123 (правая граница включена не будет)
type(gg)
<class 'range'>
list(gg) #чтоб его увидеть, необходимо преобразовать в другой тип
[76, 85, 94, 103, 112, 121]
range(23) #функция создаст последовательность чисел от 0 до 22 включительно с шагом 1
range(0, 23)
```
### 2.3. Функция zip – создание общего объекта, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей. Длина результирующего объекта равна длине самого короткого объекта из двух аргументов функции.
```py
qq=["Ефремов", "Добровольска", "Снегура", "Туровец"]
list(gg)
[76, 85, 94, 103, 112, 121]
ff=zip(gg,qq) #образуется итерируемый объект, просмотреть без преобразования типа не получится
ff
<zip object at 0x00000203B0C7EF40>
type(ff) #количество элементов-кортежей в объекте определяется размерностью меньшего объекта
<class 'zip'>
tuple(ff)
((76, 'Ефремов'), (85, 'Добровольска'), (94, 'Снегура'), (103, 'Туровец'))
ff[1] #объект ff, возвращаемый функцией zip, является итератором. У итераторов нет метода __getitem__, который позволяет обращаться к элементам по индексу. Попытка сделать это вызовет ошибку TypeError.
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
ff[1]
TypeError: 'zip' object is not subscriptable
c= list(zip(gg, qq)) #для обращения по индексу можно преобразовать в другой тип
c[0]
(76, 'Ефремов')
```
### 2.4. Функция eval – вычисление значения выражения, корректно записанного на языке Python и пред-ставленного в виде символьной строки.
```py
fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=4
dan
-136.0
```
### 2.5. Функция exec – чтение и выполнение объекта-аргумента функции. Этот объект должен представлять собой строку символов с совокупностью инструкций на языке Python.
```py
exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
gg
221.456
```
### 2.6. Самостоятельно изучите и попробуйте применить функции abs, pow, max, min, sum, divmod, len, map.
```py
abs(-5) #модуль
5
```
```py
len('Длина строки')
12
```
```py
max(2,3,4)
4
```
```py
min(2,3,4)
2
```
```py
pow(2,3)
8
```
```py
>>> a=(5,10,7)
>>> sum(a)
22
>>>list(map(lambda x: x*2, [1, 2, 3, 4]))
[2, 4, 6, 8]
>>>divmod(7, 2)
(3, 1)
```
## 3. Функции из стандартного модуля math – совокупность разнообразных математических функций.
```py
import math
dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fma', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
help(math.factorial)
Help on built-in function factorial in module math:
factorial(n, /)
Find n!.
math.factorial(5)
120
math.sin(1.57) #из радиан в значение синуса
0.9999996829318346
math.acos(1) #из значения косинуса в радианы
0.0
math.degrees(1) #из радиан в градусы
57.29577951308232
math.exp(2) #e в степени 2
7.38905609893065
math.log(10) #натуральный логарифм по основанию e
2.302585092994046
math.log(8, 2) #логарифм 8 по основанию 2
3.0
math.log10(10) #логарифм 10 по основанию 10
1.0
math.sqrt(4)
2.0
math.ceil(2.3) #наименьшее целое число, большее или равное 2.3(округление вверх)
3
math.ceil(-2.3)
-2
math.floor(2.3) #округление вниз
2
math.floor(-2.3)
-3
math.pi
3.141592653589793
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 – совокупность функций для выполнения операций с псевдослучайными числами и выборками.
### 5.1.
```py
import random
dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_fabs', '_floor', '_index', '_inst', '_isfinite', '_lgamma', '_log', '_log2', '_os', '_parse_args', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', 'betavariate', 'binomialvariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'main', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
help(random.seed)
Help on method seed in module random:
seed(a=None, version=2) method of random.Random instance
Initialize internal state from a seed.
The only supported seed types are None, int, float,
str, bytes, and bytearray.
None or no argument seeds from current time or from an operating
system specific randomness source if available.
If *a* is an int, all bits are used.
For version 2 (the default), all of the bits are used if *a* is a str,
bytes, or bytearray. For version 1 (provided for reproducing random
sequences from older versions of Python), the algorithm for str and
bytes generates a narrower range of seeds.
# Установка начального значения для воспроизводимости
random.seed(42) # Фиксируем seed для одинаковых результатов
#random() - равномерное распределение [0, 1)
random.random()
0.6394267984578837
# uniform(a, b) - равномерное распределение [a, b]
random.uniform(5, 15)
5.25010755222667
# randint(a, b) - случайное целое [a, b]
random.randint(1, 100)
36
# gauss(mu, sigma) - нормальное распределение
random.gauss(0, 1) # центр распределения;стандартное отклонение
0.017593105583573694
# choice(sequence) - случайный выбор
a=[1,2,3,4,5,6,7]
random.choice(a)
1
# shuffle(sequence) - перемешивание
random.shuffle(a)
a
[4, 2, 3, 1, 5, 7, 6]
# sample(population, k) - выборка без повторений
random.sample(range(100), 5)
[4, 3, 11, 27, 29]
# betavariate(alpha, beta) - бета-распределение
random.betavariate(2, 5) #где альфа и бета - параметры формы
0.3918844780644009
# gammavariate(alpha, beta) - гамма-распределение
random.gammavariate(2, 1)
2.219353519271194
```
### 5.2. Создание списка с 4 случайными значениями
```py
random_values = [
random.uniform(0, 10), #равномерное распределение [0, 10)
random.gauss(50, 10), #нормальное распределение (м.о.=50, с.о.=10)
random.betavariate(2, 5), #бета-распределение (alpha=2, beta=5)
random.gammavariate(3, 2) #гамма-распределение (alpha=3, beta=2)
]
random_values
[5.892656838759088, 55.47961646339978, 0.5314696353281997, 2.163791803055314]
nazvania = [
"равномерное [0, 10)",
"nормальное (mu=50, SIGMA=10)",
"бета (alpha=2, beta=5)",
"гамма (alpha=3, beta=2)"
]
list(zip(random_values, nazvania))
[(5.52040631273227, 'равномерное [0, 10)'), (48.36023998393615, 'nормальное (mu=50, SIGMA=10)'), (0.3513506341781665, 'бета (alpha=2, beta=5)'), (3.4766245452081708, 'гамма (alpha=3, beta=2)')]
```
## 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() #функция time возвращает время в секундах, прошедшее с начала эпохи, за которое обычно принимается 1.01.1970г.
c1
1760885547.2719448
c2=time.time()-c1 #временной интервал в секундах, со времени ввода предыдущей инструкции
c2
41.91496253013611
dat=time.gmtime() #вывод полной информацию о текущем времени. Функция возвращает (UTC). Московское время MSK опережает UTC на 3 часа
dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=19, tm_hour=14, tm_min=54, tm_sec=29, tm_wday=6, tm_yday=292, tm_isdst=0)
dat.tm_mon
10
dat.tm_year
2025
dat.tm_mday
19
dat.tm_hour
14
dat.tm_min
55
dat.tm_sec
30
dat.tm_wday #День недели - четверг (дни недели: 0=понедельник, 1=вторник, 2=среда, 3=четверг, 4=пятница, 5=суббота, 6=воскресенье)
6
dat.tm_yday #День года - 292-й день в году (считая с 1 января = 1)
292
dat.tm_isdst #Летнее время - не действует (0 = зимнее время, 1 = летнее время, -1 = неизвестно)
0
```
```py
time.localtime() #Получение местного времени
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=19, tm_hour=17, tm_min=58, tm_sec=49, tm_wday=6, tm_yday=292, tm_isdst=0)
time.asctime() #Получение текущего времени, представление времени из кортежа в строку
'Sun Oct 19 17:59:18 2025'
time.ctime() #Преобразование времени в секундах, прошедшего с начала эпохи, в строку
'Sun Oct 19 17:59:35 2025'
time.sleep(3) #Прерывание работы программы на заданное время(3 секунды)
time_tuple = (2025, 1, 2, 3, 4, 5, 6, 222, 0)
time_obj = time.struct_time(time_tuple)
time_obj
time.struct_time(tm_year=2025, tm_mon=1, tm_mday=2, tm_hour=3, tm_min=4, tm_sec=5, tm_wday=6, tm_yday=222, tm_isdst=0)
seconds = time.mktime(time_obj) #Преобразование времени из типа кортежа или struct_time в число секунд с начала эпохи
seconds
1735776245.0
back_to_time = time.localtime(seconds) #Обратное преобразование
back_to_time
time.struct_time(tm_year=2025, tm_mon=1, tm_mday=2, tm_hour=3, tm_min=4, tm_sec=5, tm_wday=3, tm_yday=2, tm_isdst=0)
```
## 7. Графические функции.
### Построение графиков
```py
import pylab
x=list(range(-3,55,4))
t=list(range(15))
pylab.plot(t,x) #Создание графика в оперативной памяти
[<matplotlib.lines.Line2D object at 0x0000027668162490>]
pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
pylab.xlabel('время')
Text(0.5, 0, 'время')
pylab.ylabel('сигнал')
Text(0, 0.5, 'сигнал')
pylab.show() #Отображение графика на экране
```
![alt text](./screenshots/{58781A87-6633-474F-A77A-BE36643822E4}.png)
```py
X1=[12,6,8,10,7]
X2=[5,7,9,11,13]
pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000027669976C10>]
pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000027669976D50>]
pylab.show()
```
![alt text](./screenshots/{32B82522-D8D5-43AA-9C7F-4991CE02A603}.png)
### Построение круговой диаграммы
```py
region=['Центр','Урал','Сибирь','Юг']
naselen=[65,12,23,17]
pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x00000160BCB69BE0>, <matplotlib.patches.Wedge object at 0x00000160BD497390>, <matplotlib.patches.Wedge object at 0x00000160BD497750>, <matplotlib.patches.Wedge object at 0x00000160BD4979D0>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
pylab.show()
```
![alt text](./screenshots/1.png)
### Построение гистаграммы
```py
grades = [85, 92, 78, 65, 90, 85, 88, 72, 95, 81, 85, 90, 78, 85, 92]
pylab.hist(grades, bins=5, edgecolor='black', alpha=0.7, color='skyblue')
(array([1., 1., 3., 5., 5.]), array([65., 71., 77., 83., 89., 95.]), <BarContainer object of 5 artists>)
pylab.title('Гистограмма распределения оценок')
Text(0.5, 1.0, 'Гистограмма распределения оценок')
pylab.xlabel('Оценки')
Text(0.5, 0, 'Оценки')
pylab.ylabel('Частота')
Text(0, 0.5, 'Частота')
pylab.grid(axis='y', alpha=0.75)
pylab.show()
```
![alt text](./screenshots/{A5B2DC00-DB40-42EF-B410-DAA0781F2422}.png)
### Построение столбчатой диаграммы
```py
categories = ['A', 'B', 'C', 'D', 'F']
values = [3, 7, 8, 2, 1]
pylab.bar(categories, values, color=['red', 'orange', 'yellow', 'green', 'blue'], alpha=0.7)
<BarContainer object of 5 artists>
pylab.title('Столбчатая диаграмма распределения по категориям')
Text(0.5, 1.0, 'Столбчатая диаграмма распределения по категориям')
pylab.xlabel('Категории')
Text(0.5, 0, 'Категории')
pylab.ylabel('Количество')
Text(0, 0.5, 'Количество')
pylab.grid(axis='y', alpha=0.75)
pylab.show()
```
![alt text](./screenshots/{7D368B80-7126-4808-B3BC-84E476BAECC5}.png)
## 8. Модуль statistics.
```py
# Данные для статистического анализа
data = [23, 45, 67, 34, 89, 56, 72, 41, 58, 64, 39, 51, 47, 62, 55]
import statistics
mean_value = statistics.mean(data) #нахождение среднего
mean_value
53.53333333333333
median_value = statistics.median(data) #нахождение медианы
median_value
55
dat = [1, 1, 1, 2, 3, 4, 5, 6, 7]
mode_value = statistics.mode(dat) #нахождение моды
mode_value
1
```
## 9. Конец сеанса работы c IDLE.

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

@ -0,0 +1,78 @@
# Общее контрольное задание по теме 4
Ефремов Станислав, А-02-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```py
# Комплексное число и операции
import math
import cmath
import time
import random
tup = tuple(math.floor((round(cmath.phase(0.2+0.8j), 2) * 20) / 3), (round(cmath.phase(0.2+0.8j), 2) * 20) % 3)
print(tup)
(8, 2.6000000000000014)
# Текущее московское время
moscow_time = time.time()
moscow_time
1760944817.0515099
mos_real = moscow_time+3*3600
mos_real = time.gmtime(mos_real)
mos_real
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=20, tm_hour=10, tm_min=20, tm_sec=17, tm_wday=0, tm_yday=293, tm_isdst=0)
current_time_str = str(mos_real.tm_hour)+" h "+str(mos_real.tm_min)+" min "
current_time_str
'10 h 20 min '
# Случайная выборка дней недели
dni = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вск']
random_days = random.sample(dni, 3)
random_days
['вт', 'пт', 'вск']
# Случайный выбор числа из последовательности
chiselki = list(range(14, 33, 3))
randomchik = random.choice(chiselki)
randomchik
20
# Генерация нормально распределенного числа и списка букв
N = round(random.gauss(15, 4))
N
18
import string #азбука. подписаться
random.sample(string.ascii_letters, N)
['g', 'y', 'r', 'D', 'O', 'x', 'k', 'U', 'w', 'n', 'X', 'e', 'M', 'T', 'I', 'p', 'N', 'W']
# Временной интервал в минутах
interval = math.floor((time.time()+3*3600 - (moscow_time+3*3600))/60)
interval
7
intervalchik = (time.gmtime(time.time()+3*3600 - (moscow_time+3*3600))).tm_min + (time.gmtime(time.time()+3*3600 - (moscow_time+3*3600))).tm_hour * 60
intervalchik
9
```

@ -0,0 +1,20 @@
# Индивидуальное контрольное задание по теме 4
Ефремов Станислав, А-02-23
## Задание
Вариант - 9
Напишите инструкцию, позволяющую определить и записать в переменную календарные характеристики (год, месяц, день) момента, отстоящего на 7000000 сек. вперед от текущего времени. Выведите эти сведения в виде строки вида: «Это будет ХХ-ХХ-ХХХХ». Создайте множество с 5 случайными целыми элементами, значения которых находятся в диапазоне значений от 1 до 12.
## Решение
```py
>>> fut = time.gmtime(time.time()+3*3600+7000000)
>>> fut
time.struct_time(tm_year=2026, tm_mon=1, tm_mday=9, tm_hour=12, tm_min=5, tm_sec=34, tm_wday=4, tm_yday=9, tm_isdst=0)
>>> print(f'Это будет {fut.tm_mday}-{fut.tm_mon}-{fut.tm_year}' )
Это будет 9-1-2026
>>> mn = set(random.sample(range(1,13),5))
>>> print(mn)
{1, 2, 3, 5, 12}
```
Загрузка…
Отмена
Сохранить