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

...

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

Автор SHA1 Сообщение Дата
Dmitry Kolomeytsev b1451aa12a ikz
5 дней назад
Dmitry Kolomeytsev 0483e55fda task md added
6 дней назад
Dmitry Kolomeytsev 686ddf7a5e first commit
6 дней назад
Dmitry Kolomeytsev dd50b4ee0d minor changes
6 дней назад
Dmitry Kolomeytsev 5a52886a5a labadan
6 дней назад
Dmitry Kolomeytsev ce6b3bf255 test.md completed
3 недель назад
Dmitry Kolomeytsev 235445552c minor changes
3 недель назад
Dmitry Kolomeytsev 76cd9a3978 minor changes in task.md
3 недель назад
Dmitry Kolomeytsev e83b4207d5 added otstupi
3 недель назад
Dmitry Kolomeytsev 5cf2a8c4b2 task.md completed
3 недель назад
Dmitry Kolomeytsev 427e5381bd fixed h1 -> h2
3 недель назад
Dmitry Kolomeytsev 18560c6b28 formal changes
3 недель назад
Dmitry Kolomeytsev 57f32a3ef3 lab completed
3 недель назад
Dmitry Kolomeytsev e65664ef64 minor change
1 месяц назад
Dmitry Kolomeytsev 40b4d228af test #5 completed
1 месяц назад
Dmitry Kolomeytsev 239040ccf2 final test completed
1 месяц назад
Dmitry Kolomeytsev 0797d58fc5 minor changes
1 месяц назад
Dmitry Kolomeytsev 4d04146017 completed additional tasks, minor changes
1 месяц назад
Dmitry Kolomeytsev ed93af7914 task completed
1 месяц назад
Dmitry Kolomeytsev 901e73d6bd fixed minor inconveniences
1 месяц назад
root 02d79c29f7 report completed
1 месяц назад
Dmitry Kolomeytsev 73bff36a9b test: removing file
1 месяц назад
Dmitry Kolomeytsev 79dc157a1a test number2
1 месяц назад
Dmitry Kolomeytsev 74790dfbe0 testing: removed file
1 месяц назад
Dmitry Kolomeytsev c2a72542ab testing
1 месяц назад
Dmitry Kolomeytsev 126d7c11aa completed points 1-6.3
1 месяц назад
Dmitry Kolomeytsev bf86515420 created template files
1 месяц назад
Dmitry Kolomeytsev 645474a83c added template files for the work
1 месяц назад
Dmitry Kolomeytsev 6c3452f507 test.md completed
2 месяцев назад
Dmitry Kolomeytsev 129c0a148b minor changes
2 месяцев назад
Dmitry Kolomeytsev d620ab704c task.md completed
2 месяцев назад
Dmitry Kolomeytsev 98c75780a2 tema 2 done
2 месяцев назад
Dmitry Kolomeytsev ada602dc5d test task added
2 месяцев назад
Dmitry Kolomeytsev 810adeb790 minor changes in 12p
2 месяцев назад
Dmitry Kolomeytsev cb07d98dfc minor changes
2 месяцев назад
Dmitry Kolomeytsev 0cfc1194bd minor changes in numeration
2 месяцев назад
Dmitry Kolomeytsev 6252887129 minor changes
2 месяцев назад
Dmitry Kolomeytsev 869d442432 edited report, finished lab
2 месяцев назад
Dmitry Kolomeytsev 59895c9fc4 First commit
2 месяцев назад

@ -0,0 +1,16 @@
# Протокол по Теме 1 <ФИО студента>
import os
os.chdir(r"\\wsl.localhost\Ubuntu\home\s0ba4\mpei\python-labs\TEMA1")
import Pr0
Hello
Your name =
Dmitry
import os
os.chdir(r"\\wsl.localhost\Ubuntu\home\s0ba4\mpei\python-labs\TEMA1")
import prb1
Hello
Your name =
Dmitry

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

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

После

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

@ -0,0 +1,2 @@
name = input("Как Вас зовут? ")
print("Привет,", name)

@ -1,2 +1,10 @@
name = input("Как Вас зовут? ")
print("Привет,", name)
# Программа по теме 1 студента Коломейцева Дмитрия
# п. 3
print('Hello')
# п. 4
h=input('Your name = \n')
# п. 8
import os
os.chdir(r'\\wsl.localhost\Ubuntu\home\s0ba4\mpei\python-labs\TEMA1')

@ -0,0 +1,215 @@
# Отчет по теме 1
Коломейцев Дмитрий, А-02-23
## Тема 1. Знакомство с интерпретатором и интерактивной оболочкой IDLE
## 1.1-2 Создание рабочего каталога и запуск Python
Настроил рабочий каталог для среды Python. Запустил Python IDLE.
## 1.3-7 Выполнение команд в Python
Выполнил ввод:
```py
print('Hello')
Hello
```
Ввёл имя и получил вывод:
```py
h = input('Your name=')
Your name=Dmitry
```
Закрыл IDLE командой:
```py
exit()
```
Далее снова открыл IDLE и ознакомился с главным окном среды.
## 1.8-9 Установка рабочего каталога и изменение настроек оболочки
Я импортировал библиотеку OS и задал путь к рабочему каталогу командой os.chdir. Используя приставку "r" я указываю, чтобы python читал следующую строку как raw string.
```py
import os
os.chdir(r"\\wsl.localhost\Ubuntu\home\s0ba4\mpei\python-labs\TEMA1")
```
Поменял шрифт и его размер через окно настроек.
![alt text]({949D9561-C6A7-4F78-AF7D-82688BD43A9D}.png)
А также его ширину и высоту, и подсветку комментариев коричневым цветом:
![alt text]({72E2EB1E-ED29-4D58-B3D3-6E580FA7F132}.png)
![alt text]({50D5871F-8C96-4B7D-9C0E-84A972319BCC}.png)
## 1.10 Создание, сохранение и запуск файла с программой
Далее я создал новый файл и сохранил его. Далее запустил командой 'Run Module'. Также программу можно запустить клавишей F5.
```py
# Программа по теме 1 студента Коломейцева Дмитрия
# п. 3
print('Hello')
# п. 4
h=input('Your name = \n')
# п. 8
import os
os.chdir(r'\\wsl.localhost\Ubuntu\home\s0ba4\mpei\python-labs\TEMA1')
```
Также запустить программу можно через командную строку, импортировав файл командой import <file> (подразумевается, что файл с расширением .py)
```py
import Pr0
Hello
Your name =
Dmitry
```
## 1.11 Запуск программы prb1.py
```py
import prb1
Как Вас зовут? Дмитрий
Привет, Дмитрий
```
Далее я отредактирую название файла Pr0 на prb1, запущу его и посмотрю что выведет консоль.
```py
================================ RESTART: Shell ================================
import os
os.chdir(r"\\wsl.localhost\Ubuntu\home\s0ba4\mpei\python-labs\TEMA1")
import prb1
Hello
Your name =
Dmitry
```
## 12. Попытка запуска скомпилированной программы в текстовом редакторе
В текстовом редакторе я открыл каталог __pycache__ и попытался открыть в текстовом редакторе файл Pr0.cpython-34.pyc.
![alt text]({6E2E2B8D-EFA2-4831-9E59-3A3EB724C9D0}.png)
Связано это с тем, что Python - интерпретируемый язык, а .pyc - это промежуточный байткод, который запускается виртуальной машиной Python (PVM). При последующих запусках программы, если код не менялся, то программа запускается быстрее.
## 13. Протокол студента в новом окне
Создал ноывй файл, и скопировал в него все команды, которые я выполнял в лабораторной работе:
```py
import os
os.chdir(r"\\wsl.localhost\Ubuntu\home\s0ba4\mpei\python-labs\TEMA1")
import Pr0
Hello
Your name =
Dmitry
import prb1
Как Вас зовут? Дмитрий
Привет, Дмитрий
# Переименовал файл Pr0.py в prb1.py
# Перезапустил shell, заново указал путь к рабочему каталогу и запустил prb1
================================ RESTART: Shell ================================
import os
os.chdir(r"\\wsl.localhost\Ubuntu\home\s0ba4\mpei\python-labs\TEMA1")
import prb1
Hello
Your name =
Dmitry
```
## 14. Вызов помощи через help и F1
В окне help предоставлена документация для IDLE, для Python и Turtle Demo - это встроенная демонстрационная программа для визуализации возможностей графического модуля turtle в Python.
![alt text]({8692DC52-F8C3-44F3-A38A-F0FB3E302EF1}.png)
```py
help(print)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
help(input)
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.
```
Также при нажатии F1 можно открыть окно с документацией для Python в браузере.
![alt text]({CC49F18A-0771-4235-9407-B529B1CF3B1E}.png)
В документации на закладке Index находим print() built-in function
![alt text]({3A0DEE6F-9B44-4562-A6AF-5696AAE5E0B4}.png)
Нажимаем по ней и открывается справка по команде
![alt text]({BB0B7571-6611-42D9-A234-2E007B47CE66}.png)
## 15. Повтор действий по открытию и запуску файлов
1. Открыл файл prb1.py. Файл открылся в текстовом редакторе Python IDLE
2. Запустил программу через Run Module, ввёл имя, получил приветственное сообщение:
![alt text]({20BD8F67-4D31-4235-93DC-0734C6A09B6A}.png)
3. Также запустил Pr0.py. Программа работает исправно.
4. Далее закрыл все окна и импортировал tdemo_chaos.py. Запустил программу.
Сначала программа строит синий график.
![alt text]({B6627959-4F1F-4295-9D87-E49778981824}.png)
Затем поверх него последовательно строятся зелёный и красный.
![alt text]({61B6EB65-1A67-49FE-A034-FCD9FEDD679A}.png)
Затем масштаб увеличивается.
![alt text]({97B37133-07C0-4FBA-B8D1-29759C5C4BC1}.png)
Также в меню "Help" есть демонстрационные варианты графического модуля Turtle:
Clock:
![alt text](image.png)
Fractals:
![alt text]({33900094-B02F-4578-A9C8-1BC8F543C9E6}.png)
Yinyang:
![alt text]({B167D907-F631-43EE-9487-70F00807A90D}.png)
## 16. Завершение работы с программой
Файл - выход (exit) - завершение работы с программой.

@ -0,0 +1,15 @@
# Индивидуальное контрольное задание по теме 1
Коломейцев Дмитрий, А-02-23
## Вопрос
Как можно запустить на выполнение программу, исходный код которой находится в текстовом файле ABC.txt?
## Ответ
В IDLE открыть файл "ABC.txt" в новом окне, затем запустить с помощью Run Module. Код запускается исправно даже из .txt
![alt text]({F7D7B2E4-76E6-4F38-9C43-470D24B73207}.png)
![alt text]({B972A96F-678A-40AB-BAFF-18C9F80851E2}.png)

@ -0,0 +1 @@
print("hello world!")

@ -0,0 +1 @@
print("Hello World!")

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

@ -0,0 +1,361 @@
# Отчет по теме 2
Коломейцев Дмитрий, А-02-23
## Тема 2. Базовые типы объектов
## 1-2. Изучение простых объектов
Создали переменные f1 и f2, затем получили список атрибутов среды и каждой переменной отдельно командой dir():
```py
f1=16
f2=3
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2']
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']
dir(f2)
['__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']
```
Для определения классовой принадлежности используем команду type():
```py
type(f1)
<class 'int'>
type(f2)
<class 'int'>
```
Удалим переменные командой del var1, var2, ...:
```py
del f1, f2
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
```
## 3. Правила именования объектов в Python
- Имена должны состоять из латинских букв, цифр и символов подчеркивания;
- Имена должны начинаться с латинской буквы (иногда могут начинаться с символа подчеркивания, но это – особый вид переменных);
- Имена не должны совпадать с ключевыми словами и встроенными идентификаторами языка Python;
- Большие и малые буквы в именах различаются (имена – чувствительные к регистру)!
```py
gg1=1.6
hh1='Строка'
73sr=3
SyntaxError: invalid decimal literal
and=7
SyntaxError: invalid syntax
```
## 4. Вывод списка ключевых слов
Просмотрел список ключевых слов Python и записал их в переменную keyword_array.
```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']
keyword_array = keyword.kwlist
keyword_array
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
```
## 5. Вывод списка встроенных идентификаторов и изучение функций
```py
import builtins
dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', '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']
```
Изучил назначение математических функций с примерами:
```py
# Модуль числа
abs(-7)
7
# Длина объекта
len("Привет, мир!")
11
# Максимально число
max([5, 12, 3])
12
# Минимальное число
min(4, 9, 1)
1
# Степень числа pow(число, степень)
pow(2, 5)
32
# Округление до n знаков после запятой
round(3.14159, 2)
3.14
# Сортировка массива с параметрами (по возрастанию, по убыванию и т.д.)
sorted([3, 1, 2, 5])
[1, 2, 3, 5]
sorted([3, 1, 2, 5], reverse=True)
[5, 3, 2, 1]
# Сумма чисел
sum([10, 20, 30])
60
# Создаёт пары сопоставляя элементы 1 массива элементам 2 массива
zip([1, 2, 3], ['a', 'b', 'c'])
[(1, 'a'), (2, 'b'), (3, 'c')]
```
## 6. Вывод переменных с разным регистром
Вывел 2 переменные с одинаковым названием, но с разным регистром - значения разные:
```py
Gg1=45
gg1
1.6
Gg1
45
```
## 7. Изучение простых базовых типов: bool, int, float, complex, str
Логический тип хранит 2 типа значений: true и false.
### 7.1 Логический тип
```py
bb1=True; bb2=False
bb1;bb2
True
False
type(bb1)
<class 'bool'>
```
### 7.2 Другие простые типы
```py
# Целый тип int
ii1=-1234567890
ii1
-1234567890
# Вещественный тип float
ff1=-8.9876e-12
ff1
-8.9876e-12
# Тип int, но двоичная запись
dv1=0b1101010
dv1
106
# Тип int, но восьмеричная запись
vsm1=0o52765
vsm1
22005
# Тип int, но шестнадцатеричная запись
shest1=0x7109af6
shest1
118528758
# Тип complex комплексных чисел
cc1=2-3j
cc1
(2-3j)
# Создание комплексной переменной из 2 int
a=3.67; b=-0.45
a;b
3.67
-0.45
cc2=complex(a,b)
cc2
(3.67-0.45j)
```
### 7.3 Строковый тип (str)
```py
ss1='Это - строка символов'
ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции."""
# Индексирование и срезы строк
ss1[0]
'Э'
ss1[8]
'р'
ss1[-2]
'о'
ss1[6:9]
'стр'
ss1[13:]
'символов'
ss1[:13]
'Это - строка '
ss1[5:-8]
' строка '
ss1[3:17:2]
' тоасм'
ss1[17:3:-2]
'омсаот '
ss1b= 'Меня зовут: \n Коломейцев Д.А.'
ss1b
'Меня зовут: \n Коломейцев Д.А.'
```
Изучил операции со строками:
```py
# Конкатенация строк (соединение)
ss1="Привет"
ss14=" мир"
ss15=ss1+ss14
print(ss1+'b') # конкатенация с символом
```
## 8 Изучение составных типов данных: list, tuple, dict, set
### 8.1 Списки (list)
Списки - упорядоченные коллекции объектов произвольных типов, которые можно изменять.
```py
# Создание списков
spis1=[111,"Spisok",5-9j]
stup0=(0,0,1,1,1,1,1,1,1)
spis1=[1,2,3,4, 5,6,7, 8,9,10]
# Индексирование
print(spis1[-1]) # последний элемент
10
print(stup0[-8:2]) # срез кортежа
(0, 0)
# Изменение списка
spis1[1]=spis1
print(len(spis1)) # длина списка
10
# Методы списков
spis1.append("New item") # добавление элемента
print("New item" in spis1) # проверка наличия элемента
True
spis1.pop(1) # удаление элемента по индексу
# Другие методы:
# list.insert(i, x) - вставляет на i-тую позицию элемент x
# list.remove(x) - удаляет первый элемент в списке со значением x
# list.extend(L) - расширяет список list, добавляя в конец все элементы списка L
```
### 8.2 Кортежи (tuple)
Главное отличие кортежей от списков - их нельзя изменять после создания.
```py
# Создание кортежей
kort1=(222,"Kortezh",7+7.8j)
print(kort1[1:2])
('Kortezh',)
# Методы кортежей
# Все методы списков, не изменяющие список
kort1.index(222) # поиск индекса элемента
0
kort1.count(222) # подсчет вхождений
1
```
### 8.3 Словари (dict)
Словари в Python - неупорядоченные коллекции произвольных объектов с доступом по ключу. Каждому ключу сопоставляется значение. Ключами могут быть только неизменяемые типы.
```py
# Создание словарей
dic1={"Saratov":145, "Orel":56, "Vologda":45}
print(dic1["Orel"])
56
d = {}
d
{}
d = {'dict': 1, 'dictionary': 2}
d
{'dict': 1, 'dictionary': 2}
# Добавление элементов
dic1["Pskov"]=78
print(dic1)
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
# Методы словарей
sorted(dic1.keys()) # сортированные ключи
['Orel', 'Pskov', 'Saratov', 'Vologda']
sorted(dic1.values()) # сортированные значения
[45, 56, 78, 145]
# Создание словарей разными способами
dic2={1:"mean",2:"standart deviation",3:"correlation"}
dic3={"statistics":dic2,"POAS":"base","elementary":"programming"}
print(dic3["statistics"][2])
standart deviation
# Другие методы:
# dict.clear() - очищает словарь.
# dict.copy() - возвращает копию словаря.
# dict.get(key[, default]) - возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None).
# dict.items() - возвращает пары (ключ, значение).
```
### 8.4 Множества (set)
Объект-множество – это неупорядоченная совокупность неповторяющихся (уникальных) элементов. Эти элементы могут быть разных, но только неизменяемых типов (числа, строки, кортежи).
```py
# Создание множеств
mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
mnoz1
{'двигатель', 'микропроцессор', 'линия связи', 'датчик'}
len(mnoz1)
4
# Методы множеств
'датчик' in mnoz1 # проверка принадлежности
True
mnoz1.add('реле') # добавление элемента
mnoz1
{'датчик', 'реле', 'двигатель', 'микропроцессор', 'линия связи'}
mnoz1.remove('линия связи') # удаление элемента
mnoz1
{'датчик', 'реле', 'двигатель', 'микропроцессор'}
```
## 9 Завершение работы.

@ -0,0 +1,77 @@
# Общее контрольное задание по теме 2
Коломейцев Дмитрий, А-02-23
## Задание
- Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции.
- Создать переменную со значением, совпадающим с первой буквой из familia.
- Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
- Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
- Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
- Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
- Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
- Создайте словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам.
## Решение
# Общее контрольное задание
```py
familia='Kolomeytsev'
var='K'
sp_kw=keyword.kwlist
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', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
sp_kw.remove('nonlocal')
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']
kort_nam=(familia, 'Aabaev', 'Robertovich', 'Kozlowskij')
kort_nam
('Kolomeytsev', 'Aabaev', 'Robertovich', 'Kozlowskij')
kort_nam.index('Kozlowskij')
3
type(kort_nam)
<class 'tuple'>
kort_nam.append(['Durov', 'Mask'])
# Кортеж нельзя изменить после создания
Traceback (most recent call last):
File "<pyshell#99>", line 1, in <module>
kort_nam.append(['Durov', 'Mask'])
AttributeError: 'tuple' object has no attribute 'append'
# Добавить элемент в кортеж можно только создав новый кортеж
kort_new = kort_nam + (['Durov', 'Mask'])
kort_nam.count('Дима')
0
dict_bas = {
"логический": bb1,
"целый": ii1,
"вещественный": ff1,
"комплексный": cc1,
"строка": ss1,
"список": spis1,
"кортеж": kort1,
"словарь": dic1,
"множество": mnoz1
}
dict_bas
{'логический': True, 'целый': -1234567890, 'вещественный': -8.9876e-12, 'комплексный': (2-3j), 'строка': 'Это - строка символов', 'список': [111, 'Spisok', (5-9j)], 'кортеж': (222, 'Kortezh', (7+7.8j)), 'словарь': {'Saratov': 145, 'Orel': 56, 'Vologda': 45}, 'множество': {'синхрофазотрон', 'датчик', 'реле', 'двигатель', 'микропроцессор'}}
```

@ -0,0 +1,19 @@
# Индивидуальное контрольное задание по теме 2
Коломейцев Дмитрий, А-02-23
## Задание
22. Создайте объект-строку символов с текстом: «Новая строка символов кириллицы». Определите число символов в строке. Напишите инструкцию, приводящую к удалению из строки слова «символов». Отобразите строку.
## Решение
```py
new_string="Новая строка символов кириллицы"
len(new_string)
31
new_string.replace("символов", "")
'Новая строка кириллицы'
```

@ -0,0 +1,830 @@
# Отчет по теме 3
Коломейцев Дмитрий, А-02-23
## Тема 3. Операции с объектами
## 1-2. Преобразование простых типов объектов
### 2.1 Преобразование в логический тип с помощью функции bool(<Объект>):
```py
logiz1=bool(56)
logiz1
True
type(logiz1)
<class 'bool'>
logiz2=bool(0)
logiz2
False
type(logiz2)
<class 'bool'>
logiz3=bool("Beta")
logiz3
True
type(logiz3)
<class 'bool'>
logiz4=bool("")
logiz4
False
type(logiz4)
<class 'bool'>
logiz5=bool("Infinity")
logiz5
True
type(logiz5)
<class 'bool'>
```
### 2.2 Преобразование в целое десятичное число объекта с заданной системой счисления.
По умолчанию система счисления принимается десятичной:
```py
tt1=int(198.6)
tt1
198
type(tt1)
<class 'int'>
tt2=int("-76")
tt2
-76
type(tt2)
<class 'int'>
tt3=int("B",16)
tt3
11
type(tt3)
<class 'int'>
tt4=int("71",8)
tt4
57
type(tt4)
<class 'int'>
tt5=int("98.76")
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
tt5=int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'
```
_Объяснение последнего вызова: функция int() в Python принимает только строки, которые представляют целые числа без десятичной части. Когда программа пытается выполнить int("98.76"), Python обнаруживает символ точки (.) в строке и не может интерпретировать её как допустимое целое число._
Преобразование целых чисел или строк символов в вещественное число. Преобразования выполняются с помощью функции float(<Объект>).
Примеры преобразований:
```py
flt1=float(789)
flt1
789.0
type(flt1)
<class 'float'>
flt2=float(-6.78e2)
flt2
-678.0
type(flt2)
<class 'float'>
flt3=float("Infinity")
flt3
inf
type(flt3)
<class 'float'>
flt4=float("-inf")
flt4
-inf
type(flt4)
<class 'float'>
```
### 2.3 Преобразование десятичных чисел в другие системы счисления:
```py
hh=123
dv1=bin(hh)
dv1
'0b1111011'
type(dv1)
<class 'str'>
vos1=oct(hh)
vos1
'0o173'
type(vos1)
<class 'str'>
shs1=hex(hh)
shs1
'0x7b'
type(shs1)
<class 'str'>
int(dv1,2)
123
```
## 3. Преобразование сложных базовых типов объектов
### 3.1 Преобразование в строку символов с помощью функции str(<Объект>).
Примеры:
```py
strk1=str(23.6)
strk1
'23.6'
strk2=str(logiz3)
strk2
'True'
strk3=str(["A","B","C"])
strk3
"['A', 'B', 'C']"
strk4=str(("A","B","C"))
strk4
"('A', 'B', 'C')"
strk5=str({"A":1,"B":2,"C":9})
strk5
"{'A': 1, 'B': 2, 'C': 9}"
```
Создайте строку со своей фамилией и инициалами, преобразуйте её в список, затем список – в кортеж и, наконец, кортеж – в строку.
```py
fio="Kolomeytsev D.A."
fio=list(fio)
fio
['K', 'o', 'l', 'o', 'm', 'e', 'y', 't', 's', 'e', 'v', ' ', 'D', '.', 'A', '.']
fio=tuple(fio)
fio
('K', 'o', 'l', 'o', 'm', 'e', 'y', 't', 's', 'e', 'v', ' ', 'D', '.', 'A', '.')
fio=str(fio)
fio
"('K', 'o', 'l', 'o', 'm', 'e', 'y', 't', 's', 'e', 'v', ' ', 'D', '.', 'A', '.')"
```
### 3.2 Преобразование элементов объекта в список с помощью функции list(<Объект>).
```py
spis1=list("Строка символов")
spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
spis2=list((124,236,-15,908))
spis2
[124, 236, -15, 908]
spis3=list({"A":1,"B":2,"C":9})
spis3
['A', 'B', 'C']
spis4=list({"A":1,"B":2,"C":9}.values())
spis4
[1, 2, 9]
spis5=list({"A":1,"B":2,"C":9}.items())
spis5
[('A', 1), ('B', 2), ('C', 9)]
```
### 3.3.Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>).
```py
kort7=tuple('Строка символов')
kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
kort8=tuple(spis2)
kort8
(124, 236, -15, 908)
kort9=tuple({"A":1,"B":2,"C":9})
kort9
('A', 'B', 'C')
# Извлекаются только ключи
tuple({"A":1,"B":2,"C":9}.values())
(1, 2, 9)
tuple({"A":1,"B":2,"C":9}.items())
(('A', 1), ('B', 2), ('C', 9))
```
### 3.4. Удаление объектов
```py
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'dv1', 'flt1', 'flt2', 'flt3', 'flt4', 'hh', 'kort7', 'kort8', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'logiz5', 'shs1', 'spis1', 'spis2', 'spis3', 'strk1', 'strk2', 'strk3', 'strk4', 'strk5', 'tt1', 'tt2', 'tt3', 'tt4', 'vos1']
del strk5, kort8
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'dv1', 'flt1', 'flt2', 'flt3', 'flt4', 'hh', 'kort7', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'logiz5', 'shs1', 'spis1', 'spis2', 'spis3', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'vos1']
```
## 4. Арифметические операции
```py
12+7+90
109
5.689e-1 - 0.456
0.11289999999999994
23.6+54
77.6
14-56.7+89
46.3
-6.7*12
-80.4
-234.5/6
-39.083333333333336
a=178/45
a
3.9555555555555557
b=178//45
b
3
c=-24.6//12.1
c
-3.0
148%33
16
12.6%3.8
1.2000000000000002
14**3
2744
e=2.7**3.6
e
35.719843790663525
```
Операции с комплексными числами:
```py
# Операции с комплексными числами
c1=3+4j
c2=1+2j
# Сложение - работает
c1+c2
(4+6j)
# Вычитание - работает
c1-c2
(2+2j)
# Умножение - работает
c1*c2
(-5+10j)
# Деление - работает
c1/c2
(2.2-0.4j)
# Возведение в степень - работает
c1**2
(-7+24j)
c2**3
(-11-2j)
2**c1
(-0.2248450953661021+0.11208386718098048j)
# Смешанные операции - работают
c1+5
(8+4j)
3*c2
(3+6j)
c1**2.5
(-55.32248306929338+48.80907018181927j)
# Операции, которые НЕ работают с комплексными числами:
c1//c2
Traceback (most recent call last):
File "<pyshell#95>", line 1, in <module>
c1//c2
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
c1%c2
Traceback (most recent call last):
File "<pyshell#96>", line 1, in <module>
c1%c2
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
c1>c2
Traceback (most recent call last):
File "<pyshell#97>", line 1, in <module>
c1>c2
TypeError: '>' not supported between instances of 'complex' and 'complex'
c1<c2
Traceback (most recent call last):
File "<pyshell#98>", line 1, in <module>
c1<c2
TypeError: '<' not supported between instances of 'complex' and 'complex'
```
Операции со смешанными типами:
```py
178//45.0
3.0
(2+1j)
178/c
(71.2-35.6j)
148%33
16
148.0%33
16.0
148%c
Traceback (most recent call last):
File "<pyshell#99>", line 1, in <module>
148%c
TypeError: unsupported operand type(s) for %: 'int' and 'complex'
14**3
2744
14.5**3
3048.625
c**5
(-38+41j)
```
## 5. Операции с двоичными представлениями целых чисел.
### 5.1. Двоичная инверсия (~).
Значение каждого бита в представлении числа заменяется на противоположное значение (0 на 1, 1 на 0).
```py
dv1=9
dv2=~dv1
dv1
9
dv2
-10
```
### 5.2. Двоичное «И» (&).
Побитовое совпадение двоичных представлений чисел:
```py
7&9 # 111 и 1001 = 0001
1
7&8 # 111 и 1000 = 000
0
```
### 5.3. Двоичное «ИЛИ» (|).
Побитовое сравнение двоичных представлений чисел и 0 получается,
только если оба сравниваемых разряда равны 0:
```py
7|9 # 111 или 1001 = 1111
15
7|8 # 111 или 1000 = 1111
15
14|5 # 1110 или 0101 = 1111
15
```
### 5.4.Двоичное «исключающее ИЛИ»(^).
Побитовое сравнение двоичных представлений чисел и 0
получается, только если оба сравниваемых разряда имеют одинаковые значения – оба 0 или оба
1
```py
14^5 # 1110 исключающее или 0101 = 1011
11
```
### 5.5. Сдвиг двоичного представления на заданное число разрядов.
Влево (<<) или вправо (>>) с
дополнением нулями, соответственно справа или слева.
```py
h=14 #Двоичное представление = 1110
g=h<<2 # Новое двоичное представление =111000
g
56
g1=h>>1 # Новое двоичное представление= 0111
g1
7
g2=h>>2 # Новое двоичное представление= 0011
g2
3
```
Пример работы двух двоичных чисел из 7 знаков:
```py
a = 0b1010101 # 85 в десятичной системе
b = 0b1100100 # 100 в десятичной системе
a
85
b
100
a<<2
340
b>>2
25
b
102
~b
-101
~a
-86
(b&a)
68
```
## 6. Операции при работе с последовательностями (строками, списками, кортежами).
```py
stroka='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']
```
### 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
signal1
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
signal2=(0,)*3+(1,)*5+(0,)*7
signal2
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
```
### 6.3. Проверка наличия заданного элемента в последовательности (in)
```py
stroka='Система автоматического управления'
'автомат' in stroka #Наличие подстроки в строке
True
'ку' in ['ку','-']*3 #Наличие контекста в списке
True
'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже
False
```
### 6.4.Подстановка значений в строку с помощью оператора «%»
```py
# Пример 1.
stroka='Температура = %g %s %g'
stroka
'Температура = %g %s %g'
stroka % (16,' меньше ',25)
'Температура = 16 меньше 25'
# Пример 2. Вставка с использованием данных из словаря.
stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
stroka
'Температура = %(zn1)g %(sravn)s %(zn2)g'
stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
## 7. Оператор присваивания
### 7.1. Обычное присваивание значения переменной (=)
```py
zz=-12
zz
-12
```
### 7.2.Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
```py
zz+=5 # Значение zz увеличивается на 5
zz
-7
zz-=3 # Значение уменьшается на 3
zz
-10
```
Для последовательностей операция (+=) означает конкатенацию текущего значения объекта с
заданным дополнением.
```py
stroka='Система'
stroka
'Система'
stroka+=' регулирования'
stroka
'Система регулирования'
```
### 7.3. Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
```py
zz=-12
zz/=2
zz
-6.0
zz*=5
zz
-30.0
zz*=5.4
zz
-162.0
zz//=80
zz
-3.0
zz**=4
zz
81.0
```
### 7.4.Операции деления
```py
zz//=4
zz
-7.0
zz
-25.0
zz//=4
zz
-7.0
-25//4
-7
25//4
6
zz=-5
zz%= 2
zz
1
zz*=2
zz
2
zz**=6
zz
64
```
### 7.5. Множественное присваивание
```py
w=v=10 # Переменным присваивается одно и то жезначение
>>> w
10
>>> v
10
n1,n2,n3=(11,-3,'all') #Значения переменных берутсяиз кортежа
>>> n1
11
>>> n2
-3
>>> n3
'all'
```
Можно использовать множественное присваивание с разными типами данных - Python поддерживает распаковку любых итерируемых объектов. Вот примеры для каждого типа:
Использование строки:
```py
a,b,c="ABC"
a
'A'
b
'B'
c
'C'
```
Работает. Строка разбивается на отдельные символы.
Использование списка:
```py
x,y,z=[10,20,30]
x
10
y
20
z
30
```
Работает. Элементы списка распаковываются по порядку.
Использование словаря:
```py
p,q,r={'key1':1,'key2':2,'key3':3}
p
'key1'
q
'key2'
r
'key3'
```
Работает, но распаковываются только КЛЮЧИ, не значения. Это важная особенность словарей - при итерации по умолчанию используются ключи.
Для распаковки значений нужно использовать:
```py
p,q,r={'key1':1,'key2':2,'key3':3}.values()
p
1
q
2
r
3
```
Использование множества:
```py
m,n,o={100,200,300}
m
200 # Порядок может быть другим!
n
100
o
300
```
Работает, но порядок НЕ ГАРАНТИРОВАН - множества неупорядочены, поэтому значения могут распаковаться в любой последовательности.
## 8. Логические операции
Используются при создании логических выражений, дающих в результате вычисления
значения True или False.
### 8.1. Операции сравнения
Равенство (==), не равно (!=), меньше (<), больше (>), меньше или
равно (<=), больше или равно (>=) – придумайте примеры этих операций. Сравните ранее
созданные переменные w и v.
### 8.2. Проверка наличия заданного элемента в последовательности
Или во множестве, а также
проверка наличия ключа в словаре (in).
Операции с множеством:
```py
mnoz1={'pen','book','pen','iPhone','table','book'}
dir(mnoz1)
['__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']
'book' in mnoz1
True
'cap' in mnoz1
False
```
Операции со словарем:
```py
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
['__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']
'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. Создание больших логических выражений с использованием соединительных слов
Логическое «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not).
```py
a=17
b=-6
(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
(a<b) and ('Vologda' in dic1) and ('cap' in mnoz1)
False
(a>=b) and (a==b) and not (a!=b)
False
```
### 8.4.Проверка ссылок переменных на один и тот же объект (is).
```py
w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти
w is v
# Числа до 500 в питоне имеют одинаковый адрес/хэш в памяти
True
w1=['A','B']
v1=['A','B']
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('пр') #Возвращает номер позиции первого вхождения указанного контекста или значение -1
5
stroka.count("с") #Подсчет числа вхождений строки “с” в stroka
4
stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель
spis22
['Микропроцессорная', 'система', 'управления']
stroka.upper() #Возвращает строку со всеми заглавными буквами
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка
stroka3
'Микропроцессорная система управления'
stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева
('Микропроце', 'с', 'сорная система управления')
stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа
('Микропроцессорная си', 'с', 'тема управления')
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,'a',2,'b',3,'c',4]
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) #удаляет из списка элемент с индексом 2 и выводит его
2
spsk
[1, 'a', 'b', 3, 'c', 4]
spsk.append('c') #добавление в конец списка 'c'
spsk
[1, 'a', 'b', 3, 'c', 4, 'c']
spsk.insert(2,'a') #вставляет 'a' на позицию с индексом 2
spsk
[1, 'a', 'a', 'b', 3, 'c', 4, 'c']
spsk.count('a') #считает количество 'a' в списке
2
```
### 9.3. Методы для работы с кортежами.
```py
kortezh = (1, 'a', 'b', 3, 'c', 4)
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(3) #считает количество 3 в списке
1
kortezh.index('b') #выводит с каким индексом в кортеже 'b'
2
kortezh + (5, 6) #добавляет 5, 6 в кортеж
(1, 'a', 'b', 3, 'c', 4, 5, 6)
```
### 9.4. Методы для работы со словарями.
```py
slvr = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
dir(slvr)
['__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']
slvr.keys() #получение ключей словаря
dict_keys(['a', 'b', 'c', 'd'])
slvr.values() #получение значений словаря
dict_values([1, 2, 3, 4])
slvr.items() #получение пар ключ-значение из словаря
dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
slvr.get('b') #получение значений по ключу
2
slvr.update({'e': 5, 'f': 6}) #добавление двух пар в словарь
slvr
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
slvr.pop('c') #удаление по ключу
3
slvr
{'a': 1, 'b': 2, 'd': 4, 'e': 5, 'f': 6}
```
### 9.5. Методы для работы с множествами.
```py
mng={1,'a',2,'b',3,'c',4}
dir(mng)
['__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']
mng.add('d') #добавление в множество mng элемента 'd'
mng
{1, 2, 3, 'c', 4, 'a', 'b', 'd'}
mng.remove(3) #удаление из множества mng элемента 3
mng
{1, 2, 'c', 4, 'a', 'b', 'd'}
mng1={5,'e',6}
mng2=mng.union(mng1) #объединение множеств mng и mng1
mng2
{1, 2, 'c', 4, 5, 6, 'a', 'b', 'e', 'd'}
mng3=mng2.intersection(mng) #пересечение множеств mng и mng2, получили mng так как mng входит в mng2
mng3
{1, 2, 4, 'a', 'b', 'd', 'c'}
mng4=mng2.difference(mng) #разность множеств mng и mng2, получили mng1, так как mng+mng1=mng2
mng4
{'e', 5, 6}
```
## 10. Сохранил файл и закончил сеанс работы с IDLE.

@ -0,0 +1,80 @@
# Общее контрольное задание по теме 3
Коломейцев Дмитрий, А-02-23
## Решение
### 1. Преобразовал восьмеричное значение 45 в целое число.
```py
>>> int('45', 8)
37
```
### 2. Создал объект-словарь D и затем преобразовал его в два списка: ключей и значений, а затем – эти два списка преобразовал в один кортеж. Кортеж отличается от списка тем, что он неизменяемый.
```py
>>> D = {"усиление": 23, "запаздывание": 12, "постоянная времени": 78}
>>> D
{'усиление': 23, 'запаздывание': 12, 'постоянная времени': 78}
>>> keys_list = list(D.keys())
>>> values_list = list(D.values())
>>> keys_list
['усиление', 'запаздывание', 'постоянная времени']
>>> values_list
[23, 12, 78]
>>> D1=tuple(keys_list + values_list)
>>> D1
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
```
### 3. Сделал единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.
```py
>>> b = ((1768 // 24.8) % 3) ** 2.4
>>> b
5.278031643091577
```
### 4. Сделал единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
```py
c = ((~(13 & 27)) ^ 14) << 2
c
-32
```
### 5. Создал список с 4 одинаковыми элементами 'колебат' и написал оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.
```py
>>> spis = ['колебат'] * 4
>>> spis
['колебат', 'колебат', 'колебат', 'колебат']
>>> 'аткол' in (spis[1] + spis[2])
True
```
### 6. Определил список методов, доступных у ранее созданного словаря D. Поочередно использовал его методы keys и values, определил, что можно получить с применением этих методов.
```py
>>> 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']
>>> D.keys() #получение ключей словаря
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
>>> D.values() #получение значений словаря
dict_values([23, 12, 78])
```
### 7. Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
Решение:
```py
>>> strk = "Создать объект - символьную строку с текстом данного предложения."
>>> strk1=strk.split() #разбитие строки на слова
strk1
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения.']
strk1.index('-')
2
strk1[2] = ','
strk1
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения.']
strk1.remove('данного')
strk1
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения.']
```

@ -0,0 +1,79 @@
# Индивидуальное контрольное задание по теме 3
Коломейцев Дмитрий, А-02-23
## Задание
M1_5. Условие в решении.
## Решение
1) Для чего предназначено предложение "Окно (Window)" главного меню:
Если в IDLE открыты несколько окон, например Shell и несколько файлов, то Window покажет все окна, которые открыты, чтобы между ними можно было переключаться.
2) Создайте объект-словарь с 8 элементами: ключи - фамилии студентов группы, значения - средние баллы по итогам сессии.
Напишите инструкцию, доказывающую, что создан объект именно требуемого типа.
Напишите инструкцию отображения списка атрибутов созданного объекта.
```py
students = {
"Коломейцев": 5.01,
"Антонов": 3.8,
"Турханов": 4.9,
"Степанов": 4.2,
"Морозов": 3.5,
"Новиков": 5.0,
"Васильев": 4.1,
"Соколов": 4.7
}
type(students)
<class 'dict'>
dir(students)
['__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']
```
3) Пополните словарь еще двумя элементами. Отобразите получившийся объект.
Напишите инструкцию, позволяющую для указанного студента из словаря получить значение его среднего балла.
Напишите инструкцию для получения списка всех студентов, представленных в словаре.
```py
students.update({"Aabaev":4.9, "Musk":3.1})
students
{'Коломейцев': 5.01, 'Антонов': 3.8, 'Турханов': 4.9, 'Степанов': 4.2, 'Морозов': 3.5, 'Новиков': 5.0, 'Васильев': 4.1, 'Соколов': 4.7, 'Aabaev': 4.9, 'Musk': 3.1}
students.get('Musk')
3.1
students.keys()
dict_keys(['Коломейцев', 'Антонов', 'Турханов', 'Степанов', 'Морозов', 'Новиков', 'Васильев', 'Соколов', 'Aabaev', 'Musk'])
```
4) У одного из студентов средний балл оказался на 0.2 меньше указанного в словаре.
Напишите инструкцию, исправляющую это значение в словаре.
Отобразите полученный объект.
Напишите инструкцию, вычисляющую общий средний балл для всех студентов, представленных в словаре.
```py
students['Musk']+=0.2
students
{'Коломейцев': 5.01, 'Антонов': 3.8, 'Турханов': 4.9, 'Степанов': 4.2, 'Морозов': 3.5, 'Новиков': 5.0, 'Васильев': 4.1, 'Соколов': 4.7, 'Aabaev': 4.9, 'Musk': 3.3}
average_grade = sum(students.values()) / len(students)
average_grade
4.340999999999999
```
5) Создайте список из названий 4-х учебных дисциплин и список с числом часов в неделю на изучение каждой из 4-х дисциплин.
Напишите инструкцию, позволяющую создать словарь, объединяющий эти два списка.
```py
disciplines = ["Math", "English", "Economics", "Philosophy"]
disciplines
['Math', 'English', 'Economics', 'Philosophy']
hours = [8, 4, 6, 2]
hours
[8, 4, 6, 2]
dict(zip(disciplines,hours)) # zip создает пары из элементов списка, dict создает словарь из этих пар
{'Math': 8, 'English': 4, 'Economics': 6, 'Philosophy': 2}
```

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

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

После

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

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

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

После

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

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

После

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

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

После

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

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

После

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

@ -0,0 +1,326 @@
# Отчет по теме 4
Коломейцев Дмитрий, А-02-23
## Тема 4. Встроенные функции
## 1. Настройка рабочего каталога
Настроил рабочий каталог.
## 2. Стандартные функции.
### 2.1. Функция округления числа с заданной точностью round().
```py
help(round)
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
round(123.456,1)
123.5
round(123.456,0)
123.0
type(round(123.456,0))
<class 'float'>
type(round(123.456,1))
<class 'float'>
round(123.456)
123
type(round(123.456))
<class 'int'>
```
### 2.2. Функция создания последовательности целых чисел с заданным шагом range().
```py
gg=range(76,123,9)
gg
range(76, 123, 9)
type(gg)
<class 'range'>
list(gg)
[76, 85, 94, 103, 112, 121]
range(23)
range(0, 23)
#range(23) создает последовательность целых чисел от 0 до 22 с шагом 1
list(range(23))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
```
### 2.3.Функция создания общего объекта, элементами которого являются кортежи zip().
```py
qq = ["Коломейцев", "Степанов", "Дюрр", "Козловский"]
ff = zip(gg,qq)
ff
<zip object at 0x00000000035B3BC0>
tuple(ff)
((76, 'Коломейцев'), (85, 'Степанов'), (94, 'Дюрр'), (103, 'Козловский'))
ff[1]
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
ff[1]
TypeError: 'zip' object is not subscriptable
```
Длина результирующего объекта равна длине самого короткого объекта из списка аргументов, переданных функции.
### 2.4. Функция вычисляющая значения выражения, корректно записанного на языке Python и представленного в виде символьной строки eval().
```py
fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=52
dan
104.0
```
### 2.5. Похожая на eval() функция чтения и выполнения объекта-аргумента функции exec().
```py
exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
gg
221.456
type(gg)
<class 'float'>
```
### 2.6. Самостоятельное изучение математических функций
```py
abs(-52) # Получение модуля числа
52
pow(52, 2) # Возведение числа в степень
2704
max(-100, 5, 7.53, 52) # Максимальное числоиз последовательности
52
min(-100, 5, 7.53, 52) # Минимальное числоиз последовательности
1
sum([-100, 5, 7.53, 52]) # Суммирование элементов последовательности
-35.47
divmod(52, 4)
(13, 0) # Получение кортежа с двумя элементами: результатом целочисленного деления и деления с остатком
len([-100, 5, 7.53, 52]) # Длина
4
def power(x):
return x ** 5.2
map(power, [-100, 5, 7.53, 52])
<map object at 0x0000000003FDEB00>
list(map(power, [-100, 5, 7.53, 52]))
[(-20321588110.31095-14764497998.748983j), 4311.655192066298, 36252.159010564086, 837948613.8879423]
```
## 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', '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 inmodule math:
factorial(n, /)
Find n!.
Raise a ValueError if x is negativeor non-integral.
math.factorial(5) # Расчет факториала числа
120
math.sin(math.pi / 6) # Расчет синуса числа
0.49999999999999994
math.acos(0.5) * 180 / math.pi # Расчет арккосинуса числа
60.00000000000001
math.degrees(math.pi / 6) # Перевод угла врадианах в градусы
29.999999999999996
math.radians(60) # Перевод угла в градусах в радианы
1.0471975511965976
math.exp(2) # Возведение e вопределенную степень
7.38905609893065
math.log(8, 2) # Вычисление логарифма сопределенным основанием
3.0
math.log10(1000) # Вычисление десятичногологарифма
3.0
math.sqrt(52)
7.211102550927978
math.ceil(4.25) # Округление в большуюсторону
5
math.floor(4.25) # Округление в меньшуюсторону
4
```
Вычислим значение функции с помощью библиотеки math:
```py
math.sin(2 * math.pi / 7 + math.exp(0.23))
0.8334902641414562
```
## 4. Изучение функций из модуля cmath.
```py
import cmath
dir(cmath)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
cmath.sqrt(1.2 - 0.5j) # Вычисление квадратного корня из комплексного числа
(1.118033988749895-0.22360679774997896j)
cmath.phase(1 - 0.5j) # Вычисление фазы комплексного числа
-0.4636476090008061
```
## 5. Изучение стандартного модуля random.
```py
import random
dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_index', '_inst', '_isfinite', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
help(random.seed)
Help on method seed in module random:
seed(a=None, version=2) method of random.Random instance
Initialize internal state from a seed.
The only supported seed types are None, int, float,
str, bytes, and bytearray.
None or no argument seeds from current time or from an operating
system specific randomness source if available.
If *a* is an int, all bits are used.
For version 2 (the default), all of the bits are used if *a* is a str,
bytes, or bytearray. For version 1 (provided for reproducing random
sequences from older versions of Python), the algorithm for str and
bytes generates a narrower range of seeds.
random.seed() # Задает случайное начальное состояние для псевдослучайных чисел (как сид в майнкрафте)
random.random() # Равномерно распределенное случайное число
0.9783548583709967
random.uniform(1,2) # Равномерно распределенное случайное число
1.0545226550104574
random.randint(1,10) # Случайное целое число
9
random.gauss(5,0.5)
# Нормально распределенное случайное число
3.8139508431163205
random.choice(["samsing","iphone","xiaomi"])
'xiaomi'
phones = ["samsing", "iphone", "xiaomi"]
random.shuffle(phones)
phones
['iphone', 'xiaomi', 'samsing']
random.sample(phones, 2)
['samsing', 'xiaomi']
random.betavariate(1, 2) # Случайное число с бета-распределением
0.5112342600587575
random.gammavariate(1, 2) # Случайное числос гамма-распределением
0.2940579511803219
```
Создал список с 4 случайными значениями, подчиняющимися равномерному, нормальному, бета и гамма - рапределениям соответственно:
```py
[random.uniform(1, 5), random.gauss(2, 1), random.betavariate(1, 2), random.gammavariate(1, 2)]
[2.751759380433057, 2.241357728072516, 0.2615781219761255, 1.9620856099384534]
```
## 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() # Время в секундах, прошедшеес 01.01.1970
c1
1760875216.8018625
c2 = time.time()-c1 # Получение времени соввода предыдущей команды
c2
23.937947511672974
dat = time.gmtime()
dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=19, tm_hour=12, tm_min=0, tm_sec=57, tm_wday=6, tm_yday=292, tm_isdst=0)
dat.tm_mon # Получение текущего месяца
10
dat.tm_hour # Получение текущего часа
12
datLocal = time.localtime() # Получение полной информации о текущем "местном" времени
datLocal
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=19, tm_hour=15, tm_min=1, tm_sec=36, tm_wday=6, tm_yday=292, tm_isdst=0)
time.asctime(datLocal) # Преобразование представления времени из кортежа в строку
'Sun Oct 19 15:01:36 2025'
time.ctime(c1) # Преобразование времени в секундах, прошедшего с начала эпохи, в строку
'Sun Oct 19 15:00:16 2025'
time.sleep(10) # Прерывание работы программы на заданное количество секунд
time.mktime(datLocal) # Преобразование времени из кортежа или структуры в число секунд с начала эпохи
1760875296.0
```
## 7. Графические функции.
```py
import pylab
x=list(range(-3,55,4))
t=list(range(15))
pylab.plot(t,x) #Создание графика в оперативной памяти
[<matplotlib.lines.Line2D object at 0x000001BA5FA0BFD0>]
pylab.title('Первый график') # Добавление названия графика
Text(0.5, 1.0, 'Первый график')
pylab.xlabel('время') # Добавление названия оси абсцисс
Text(0.5, 0, 'время')
pylab.ylabel('сигнал') # Добавление названия оси ординат
Text(0, 0.5, 'сигнал')
pylab.show() #Отображение графика на экране
```
![alt text](pictures/{39A2FC52-D033-47D6-AE7A-2C18DFB8849C}.png)
На одном рисунке можно отобразить несколько графиков:
```py
X1=[12,6,8,10,7]
X2=[5,7,9,11,13]
pylab.plot(X1)
pylab.plot(X2)
pylab.show()
```
![alt text](pictures/{B16269AB-FF3F-4D96-AFB1-CF5AF8E3C145}.png)
Также данный модуль дает возможность строить круговые и столбиковые диаграммы и гистограммы.
```py
region=['Центр','Урал','Сибирь','Юг'] #Метки для диаграммы
naselen=[65,12,23,17] # Значения для диаграммы
pylab.pie(naselen,labels=region) #Создание диаграммы в памяти
([<matplotlib.patches.Wedge object at 0x000001BA60C673D0>, <matplotlib.patches.Wedge object at 0x000001BA60D255D0>, <matplotlib.patches.Wedge object at 0x000001BA60D40410>, <matplotlib.patches.Wedge object at 0x000001BA60D41950>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
pylab.show() #Отображение диаграммы
```
![alt text](pictures/{DE7F74DD-ADCD-4FD3-B072-0FE157B24F01}.png)
```py
pylab.hist([5, 7, 8, 5, 5, 6, 6, 7, 7, 8, 9, 5], bins=4)
pylab.show()
```
![alt text](pictures/image.png)
```py
cities = ['Москва', 'СПб', 'Казань', 'Сочи']
population = [12.5, 5.4, 1.3, 0.4]
pylab.bar(cities, population)
<BarContainer object of 4 artists>
pylab.show()
```
![alt text](pictures/image-1.png)
## 8. Статистические функции из модуля statistics.
```py
import statistics
dir(statistics)
['Counter', 'Decimal', 'Fraction', 'LinearRegression', 'NormalDist', 'StatisticsError', '_SQRT2', '__all__', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_decimal_sqrt_of_frac', '_exact_ratio', '_fail_neg', '_float_sqrt_of_frac', '_integer_sqrt_of_frac_rto', '_isfinite', '_mean_stdev', '_normal_dist_inv_cdf', '_sqrt_bit_width', '_ss', '_sum', 'bisect_left', 'bisect_right', 'correlation', 'covariance', 'defaultdict', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'linear_regression', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'mul', 'multimode', 'namedtuple', 'numbers', 'pstdev', 'pvariance', 'quantiles', 'random', 'reduce', 'repeat', 'sqrt', 'stdev', 'sys', 'tau', 'variance']
statistics.mean([1, 2, 3, 4, 5, 6, 7, 8, 9]) # Вычисление среднего
5
statistics.stdev([1, 2, 3, 4, 5, 6, 7, 8, 9]) # Вычисление среднеквадратичного отклонения
2.7386127875258306
statistics.median([1, 2, 3, 4, 5, 6, 7, 8]) # Вычисление медианы
4.5
```
## 9. Завершение работы со средой.
Закончил сеанс работы с IDLE.

@ -0,0 +1,76 @@
# Общее контрольное задание по теме 4
Коломейцев Дмитрий, А-02-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
- Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
- Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
- Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
- Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
- Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
- Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```py
# Punkt 1
import cmath
divmod(round(cmath.phase(0.2+0.8j),2)*20,3)
(8.0, 2.6000000000000014)
# Punkt 2
import time
Time = time.time()
Time
1760948732.7906492
type(Time)
<class 'float'>
MosTimeSeconds = Time + 3*60*60
MosTimeSeconds
1760959532.7906492
MosTime = time.gmtime(MosTimeSeconds)
MosTime
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=20, tm_hour=11, tm_min=25, tm_sec=32, tm_wday=0, tm_yday=293, tm_isdst=0)
type(MosTime)
<class 'time.struct_time'>
print("Current time: {}:{}".format(MosTime.tm_hour, MosTime.tm_min))
Current time: 11:25
# Punkt 3
import random
Days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
random.sample(Days, 3)
['Friday', 'Saturday', 'Wednesday']
# Punkt 4
random.choice(range(14, 33, 3))
17
# Punkt 5
import math
N = math.floor(random.gauss(15, 4))
N
14
import string
letters = random.sample(string.ascii_letters, N)
letters
['w', 'S', 'v', 'W', 'z', 'F', 'R', 'e', 'u', 'B', 'l', 'X', 'A', 'y']
# Punkt 6
timeDiff = round(time.time() - time.mktime(localTime))
print(timeDiff // 60, "minutes and", timeDiff % 60, "seconds")
3 minutes and 27 seconds
current_time = time.time()+3*3600
time_seconds = round(current_time - MosTimeSeconds)
time_minutes = round(time_seconds / 60)
print("Время, прошедшее с 2 пункта: {}:{}".format(time_minutes, time_seconds%60))
Время, прошедшее с 2 пункта: 15:55
```

@ -0,0 +1,43 @@
# Индивидуальное контрольное задание по теме 4
Коломейцев Дмитрий, А-02-23
## Задание
Вариант №14.
Создайте объект со значением -2.3+0.8j. Определите фазу этого комплексного числа. Создайте строку с 33 символами русского алфавита. Подсчитайте число символов в строке. Случайным образом выберите из строки 7 символов и составьте из них кортеж. Превратите кортеж в новую строку.
## Решение
```py
# Создайте объект со значением -2.3+0.8j.
num = -2.3+0.8j
num
(-2.3+0.8j)
# Определите фазу этого комплексного числа
import cmath
cmath.phase(num)
2.8068558162729786
# Создайте строку с 33 символами русского алфавита
letters = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
# Подсчитайте число символов в строке
len(letters)
33
# Случайным образом выберите из строки 7 символов и составьте из них кортеж
import random
letters_tuple = tuple(random.sample(letters, 7))
letters_tuple
('ь', 'ю', 'т', 'б', 'ъ', 'р', 'в')
# Превратите кортеж в новую строку
letters_string = ''.join(letters_tuple)
letters_string
'ьютбърв'
```

Двоичные данные
TEMA5/pictures/image1.png

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

После

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

Двоичные данные
TEMA5/pictures/image2.png

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

После

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

@ -0,0 +1,360 @@
# Отчет по теме 5
Коломейцев Дмитрий, А-02-23
## Блоки инструкций, управляющие инструкции
### 1-2. Изучение управляющей конструкции if.
Оператор if используется для того, чтобы в программе выбирать разные пути выполнения кода в зависимости от условия. Условие - это логическое выражение, которое принимает значение True или False. После условия идет блок кода с отступом.
```py
porog = 10
rashod1 = 6
rashod2 = 4
if rashod1 >= porog: # Проверяем первое условие
dohod = 12 # Код выполнится, если условие верно
elif rashod2 == porog: # Проверяем второе условие
dohod = 0 # Код выполнится, если верно второе условие
else: # Если оба условия неверны
dohod = 8 # Этот код выполнится во всех остальных случаях
...
dohod
8
```
В условиях можно проверять несколько выражений сразу, используя операторы and и or:
```py
if rashod1 >= 3 and rashod2 == 4:
dohod = rashod1
if rashod2 == porog or rashod1 < rashod2:
dohod = porog
dohod
6
```
Можно проверить много разных условий подряд:
```py
if porog == 3:
dohod = 1
elif porog == 4:
dohod = 2
elif porog == 4:
dohod = 3
else:
dohod = 0
dohod
0
```
Условный оператор можно записать в одну строку:
```py
dohod = 2 if porog >= 4 else 0
dohod
2
```
Еще один способ написать условие в одну строку:
```py
if porog >= 5 : rashod1 = 6; rashod2 = 0
...
rashod1
6
rashod2
0
```
### 3. Изучение управляющей конструкции for.
Цикл for используется, чтобы пройти по всем элементам списка, строки или других подобных объектов. Цикл перебирает каждый элемент по очереди.
#### 3.1. Простой цикл.
Чтобы создать простой цикл for, нужно задать диапазон чисел, которые будут перебираться:
```py
temperatura = 5
for i in range(3, 18, 3): # i будет принимать значения 3, потом 6, потом 15
temperatura += i # Каждый раз прибавляем значение i
temperatura
50
```
#### 3.2. Более сложный цикл.
В цикле for можно использовать условия и оператор break, чтобы остановить цикл:
```py
sps = [2, 15, 14, 8]
for k in sps:
if len(sps) <= 10 : sps.append(sps[0])
else: break # Останавливаем цикл
sps
[2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2]
```
Различие между этим примером и следующим в том, что в первом случае мы меняем сам список во время цикла, а во втором - работаем с копией. Поэтому в первом примере список вырос до 11 элементов (цикл остановился по break), а во втором - остался с 8 элементами (прошелся по 4 исходным элементам и добавил 4 новых).
```py
sps = [2, 15, 14, 8]
for k in sps[:]:
if len(sps) <= 10 : sps.append(sps[0])
else: break
sps
[2, 15, 14, 8, 2, 2, 2, 2]
```
#### 3.3. Конструкция for - else.
Конструкция for - else позволяет добавить блок else, который выполнится только если цикл завершился сам по себе, без использования break. Если использовали break, то else не выполнится. Примеры:
```py
import random as rn
sps5 = []
for i in range(10):
sps5.append(rn.randint(1, 100))
ss = sum(sps5)
if ss > 500: break
else:
print(ss)
# Ничего не напечаталось, потому что сработал break
sps5 = []
for i in range(10):
sps5.append(rn.randint(1, 100))
ss = sum(sps5)
if ss > 500: break
else:
print(ss)
466
# Цикл прошел полностью, поэтому сработал блок else
```
#### 3.4. Работа с символьной строкой внутри цикла.
В Python строки можно перебирать в цикле, как список элементов:
```py
stroka = "Это - автоматизированная система"
stroka1 = ""
for ss in stroka:
stroka1 += " " + ss # Добавляем пробел перед каждым символом
stroka1
' Э т о - а в т о м а т и з и р о в а н н а я с и с т е м а'
```
#### 3.5. Конструкция list comprehension.
Цикл можно написать коротко в одну строку. Внутри квадратных скобок записано выражение-генератор. Вот пример, где рисуем график синуса:
```py
import math, pylab
sps2 = [math.sin(i * math.pi / 5 + 2) for i in range(100)] # Цикл в одну строку
pylab.plot(list(range(100)), sps2)
[<matplotlib.lines.Line2D object at 0x000001C7AD29A5D0>]
pylab.title("Синусоидальный сигнал")
Text(0.5, 1.0, 'Синусоидальный сигнал')
pylab.xlabel("Время")
Text(0.5, 0, 'Время')
pylab.ylabel("Сигнал")
Text(0, 0.5, 'Сигнал')
pylab.show()
```
Полученный график:
![alt text](pictures/image1.png)
### 4. Изучение управляющей конструкции while.
Цикл while выполняется пока условие верно. Нужно быть осторожным, чтобы цикл не стал бесконечным, иначе программа зависнет. Поэтому в цикле должно быть что-то, что изменяет условие.
#### 4.1. Цикл со счетчиком.
Самый простой while - это цикл со счетчиком, который мы уменьшаем или увеличиваем в каждой итерации:
```py
rashod = 300
while rashod:
print("Расход =", rashod)
rashod -= 50
Расход = 300
Расход = 250
Расход = 200
Расход = 150
Расход = 100
Расход = 50
```
Цикл остановился потому что на 7-й итерации переменная rashod стала равна 0, что в Python значит False. Если бы она никогда не стала 0, цикл был бы бесконечным.
#### 4.2. Цикл с символьной строкой.
В while можно использовать строку как условие, чтобы пройти по всем ее символам:
```py
import math, pylab
stroka = "Расчет процесса в объекте регулирования"
i = 0
sps2 = []
while i < len(stroka):
r = 1 - 2 / (1 + math.exp(0.1 * i))
sps2.append(r)
print("Значение в момент", i, "=", r)
i += 1
Значение в момент 0 = 0.0
Значение в момент 1 = 0.049958374957880025
Значение в момент 2 = 0.09966799462495568
Значение в момент 3 = 0.14888503362331795
...
Значение в момент 29 = 0.8956928738431645
Значение в момент 30 = 0.9051482536448664
Значение в момент 31 = 0.9137854901178277
pylab.plot(list(range(39)), sps2)
[<matplotlib.lines.Line2D object at 0x0000000029B6B610>]
pylab.title("Сигнал на выходе")
Text(0.5, 1.0, 'Сигнал на выходе')
pylab.xlabel("Время")
Text(0.5, 0, 'Время')
pylab.ylabel("Сигнал")
Text(0, 0.5, 'Сигнал')
pylab.show()
```
Полученный график:
![alt text](pictures/image2.png)
#### 4.3. Выполнение сложного алгоритма с помощью цикла.
С помощью циклов можно решать разные задачи. Вот пример: проверяем, является ли число простым.
```py
chislo = 267
kandidat = chislo // 2
while kandidat > 1:
if chislo % kandidat == 0:
print(chislo, "имеет делитель", kandidat)
break
kandidat -=1
else:
print(chislo, "является простым")
267 имеет делитель 89
```
Этот алгоритм можно переделать, чтобы проверить целый диапазон чисел:
```py
prost = [] # Список, куда будем писать простые числа
for num in range(250, 301): # Проходим по числам от 250 до 300
kandidat = num // 2
while kandidat > 1:
if num % kandidat == 0:
print(num, "имеет делитель", kandidat)
break
kandidat -= 1
else:
prost.append(num)
print(num, "является простым")
250 имеет делитель 125
251 является простым
252 имеет делитель 126
...
299 имеет делитель 23
300 имеет делитель 150
prost # Выводим список найденных простых чисел
[251, 257, 263, 269, 271, 277, 281, 283, 293]
```
#### 4.4. Инструкция continue.
Инструкция continue пропускает остаток текущей итерации и переходит к следующей:
```py
for i in range(10):
if i in [2, 4, 6, 8]: # Если число 2, 3 или 5, пропускаем его
continue
print(i)
0
1
3
5
7
9
```
### 5. Завершение работы со средой.
Сохранил файлы отчета в своем рабочем каталоге и закончил сеанс работы с IDLE.

@ -0,0 +1,128 @@
# Общее контрольное задание по теме 5
Коломейцев Дмитрий, А-02-23
## Задание
Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач:
- Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите.
- Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).
- Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
## Решение
```py
#1
import string
text = input("Введите строку на английском языке: ")
Введите строку на английском языке: Lorem ipsum dolor sit amet
for i in text:
if str.lower(i) in string.ascii_lowercase:
order = string.ascii_lowercase.index(str.lower(i)) + 1
print("Порядковый номер символа \"{}\" равен {}".format(i, order))
else:
print("Символа \"{}\" нет в английском алфавите".format(i))
Порядковый номер символа "L" равен 12
Порядковый номер символа "o" равен 15
Порядковый номер символа "r" равен 18
Порядковый номер символа "e" равен 5
Порядковый номер символа "m" равен 13
Символа " " нет в английском алфавите
Порядковый номер символа "i" равен 9
Порядковый номер символа "p" равен 16
Порядковый номер символа "s" равен 19
Порядковый номер символа "u" равен 21
Порядковый номер символа "m" равен 13
Символа " " нет в английском алфавите
Порядковый номер символа "d" равен 4
Порядковый номер символа "o" равен 15
Порядковый номер символа "l" равен 12
Порядковый номер символа "o" равен 15
Порядковый номер символа "r" равен 18
Символа " " нет в английском алфавите
Порядковый номер символа "s" равен 19
Порядковый номер символа "i" равен 9
Порядковый номер символа "t" равен 20
Символа " " нет в английском алфавите
Порядковый номер символа "a" равен 1
Порядковый номер символа "m" равен 13
Порядковый номер символа "e" равен 5
Порядковый номер символа "t" равен 20
#2
stroka = """Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом)."""
words = [word for word in ["".join(char if char.isalpha() else "" for char in word) for word in stroka.split(" ")] if word != ""]
words
['Создайте', 'список', 'со', 'словами', 'из', 'задания', 'данного', 'пункта', 'Для', 'этого', 'списка', 'определите', 'есть', 'ли', 'в', 'нем', 'некоторое', 'заданное', 'значение', 'и', 'выведите', 'соответствующее', 'сообщение', 'либо', 'о', 'нахождении', 'элемента', 'либо', 'о', 'его', 'отсутствии', 'в', 'списке', 'проверить', 'как', 'с', 'имеющимся', 'так', 'и', 'с', 'отсутствующим', 'словом']
if input("Введите слово: ").lower() in words:
print("Слово есть в списке")
else:
print("Слово отсутствует в списке")
Введите слово: СпиСоК
Слово есть в списке
if input("Введите слово: ").lower() in words:
print("Слово есть в списке")
else:
print("Слово отсутствует в списке")
Введите слово: Synchrophasotrone
Слово отсутствует в списке
#3
import random
students_summer = ["Джеймс", "Брайант", "Карри"]
marks_summer = [4, 5, 4.9]
students_winter = random.sample(students_summer, len(students_summer))
marks_winter = random.sample(marks_summer, len(marks_summer))
students_winter
['Брайант', 'Джеймс', 'Карри']
marks_winter
[4.9, 5, 4]
name = input("Введите фамилию студента: ")
Введите фамилию студента: Брайант
if name in students_summer and name in students_winter:
summer_mark = marks_summer[students_summer.index(name)]
winter_mark = marks_winter[students_winter.index(name)]
stroka = """
Студент: {}
Оценка за летнюю сессию: {}
Оценка за зимнюю сессию: {}
"""
print(stroka.format(name, summer_mark, winter_mark))
else:
print("Студента {} нет в журнале".format(name))
Студент: Брайант
Оценка за летнюю сессию: 5
Оценка за зимнюю сессию: 4.9
name = input("Введите фамилию студента: ")
Введите фамилию студента: Бёрд
if name in students_summer and name in students_winter:
summer_mark = marks_summer[students_summer.index(name)]
winter_mark = marks_winter[students_winter.index(name)]
stroka = """
Студент: {}
Оценка за летнюю сессию: {}
Оценка за зимнюю сессию: {}
"""
print(stroka.format(name, summer_mark, winter_mark))
else:
print("Студента {} нет в журнале".format(name))
Студента Бёрд нет в журнале
```

@ -0,0 +1,36 @@
# Индивидуальное контрольное задание по теме 5
Коломейцев Дмитрий, А-02-23
## Задание
Вариант 18
1. Напишите инструкцию создания объекта - символьной строки, содержащей текст с не менее 20 кириллическими символами (придумайте его сами).
2. Напишите инструкции разборки созданного объекта с созданием списка, элементами которого являются целые числа – порядковые номера соответствующих символов из созданной строки в русском алфавите. Если некоторого символа из строки нет в алфавите, на его месте в список включить число 77.
## Решение
```py
#1
stroka="Какая-то строка не менее чем с 20 символами"
#2
russian_alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
for ch in stroka.lower():
if ch in russian_alphabet:
order = russian_alphabet.index(ch) + 1
positions.append(order)
else:
positions.append(77)
print("Исходная строка: ", stroka)
Исходная строка: Какая-то строка не менее чем с 20 символами
print("Позиции символов с условием: ", positions)
Позиции символов с условием: [20, 6, 12, 19, 20, 77, 19, 10, 14, 3, 16, 13, 30, 15, 16, 11, 77, 19, 20, 18, 16, 12, 10, 77, 19, 16, 5, 6, 18, 27, 1, 6, 11, 77, 20, 6, 12, 19, 20, 77, 3, 77, 12, 16, 20, 16, 18, 16, 14, 77, 14, 15, 16, 4, 16, 77, 2, 21, 12, 3, 12, 1, 12, 1, 33, 77, 20, 16, 77, 19, 20, 18, 16, 12, 1, 77, 15, 6, 77, 14, 6, 15, 6, 6, 77, 25, 6, 14, 77, 19, 77, 77, 77, 77, 19, 10, 14, 3, 16, 13, 1, 14, 10]
```

@ -0,0 +1,7 @@
# Отчет по теме 6
Коломейцев Дмитрий, А-02-23
## Тема 6. Ввод-вывод данных и операции с файлами
## 1.

@ -0,0 +1,7 @@
# Общее контрольное задание по теме 6
Коломейцев Дмитрий, А-02-23
## Задание
## Решение

@ -0,0 +1,7 @@
# Индивидуальное контрольное задание по теме 6
Коломейцев Дмитрий, А-02-23
## Задание
## Решение

@ -0,0 +1,7 @@
# Отчет по теме 7
Коломейцев Дмитрий, А-02-23
## Тема 7. Создание пользовательских функций
## 1.

@ -0,0 +1,7 @@
# Общее контрольное задание по теме 7
Коломейцев Дмитрий, А-02-23
## Задание
## Решение

@ -0,0 +1,7 @@
# Индивидуальное контрольное задание по теме 7
Коломейцев Дмитрий, А-02-23
## Задание
## Решение

@ -0,0 +1,7 @@
# Отчет по теме 8
Коломейцев Дмитрий, А-02-23
## Тема 8. Модули и структурирование программы
## 1.

@ -0,0 +1,7 @@
# Общее контрольное задание по теме 8
Коломейцев Дмитрий, А-02-23
## Задание
## Решение

@ -0,0 +1,7 @@
# Индивидуальное контрольное задание по теме 8
Коломейцев Дмитрий, А-02-23
## Задание
## Решение

@ -0,0 +1,7 @@
# Отчет по теме 9
Коломейцев Дмитрий, А-02-23
## Тема 9. Создание пользовательских классов и объектов
## 1.

@ -0,0 +1,7 @@
# Общее контрольное задание по теме 9
Коломейцев Дмитрий, А-02-23
## Задание
## Решение

@ -0,0 +1,7 @@
# Индивидуальное контрольное задание по теме 9
Коломейцев Дмитрий, А-02-23
## Задание
## Решение
Загрузка…
Отмена
Сохранить