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

..

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

Автор SHA1 Сообщение Дата
VatariShin e74b731f64 done IKZ
2 недель назад
VatariShin 039e74c207 done lab5
2 недель назад
VatariShin 13ca6d37d0 done IKZ
2 недель назад
VatariShin aa1136f111 Done lab4
4 недель назад
VatariShin 26d1583e1b done test 1
4 недель назад
VatariShin 5533367117 done lab3
1 месяц назад
VatariShin 7c69ea6f76 done test
1 месяц назад
VatariShin 669cf0a11c done lab2
1 месяц назад
VatariShin 619fdaa6fb test done
2 месяцев назад
VatariShin 0d14f1d582 done lab1
2 месяцев назад

@ -1,7 +1,6 @@
# Программное обеспечение автоматизированных систем: лабораторные работы
[Репозиторий с методическими указаниями и заданиями.](http://uit.mpei.ru/git/main/python)
Обратите внимание на файл с комментариями в репозитории по ссылке.
## Работа с Git
@ -110,7 +109,7 @@
### Оформление решений
Решение всех заданий и тестов оформляется по образцу:
Решение всех заданий оформляется по образцу:
# Общее контрольное задание по теме 2
@ -130,8 +129,5 @@
Для темы 1 вместо «Задания» — «Вопрос», вместо «Решения» — «Ответ».
Для тем 3, 6 и 9 вместо «Индивидуального контрольного задания по теме 3 (6, 9)» —
«Тест по модулю 1 (2, 3)».
Для тем 8 и 9 раздела «Решение» не нужно,
вместо этого решение размещается в отдельных файлах `*.py`.

@ -0,0 +1,2 @@
print('This line was executed from .txt file!')
print('And this is two lines programm')

@ -0,0 +1,3 @@
#Программа по Теме 1 Коваленко Дмитрий Максимович
print('Hello')
h=input('Your name=')

@ -0,0 +1,98 @@
# Отчет по теме 1
Коваленко Дмитрий, А-01-23
## 1 Изучение среды IDLE
### 1.1 Работа с интерпретатором Python
Открыл интерпретатор python в терминале
```
vatarishin@MacBook-Air python-labs % python3
```
Попробовал пару простых комманд
```
>>> print('Hello')
Hello
>>> h=input('Your name=')
Your name=Dmitriy
```
Завершил раборту с интерпретатором в терминале
```
>>> exit()
vatarishin@MacBook-Air python-labs %
```
### 1.2 Работа с python в IDE
Создал файл [Pr0.py](Pr0.py) и непенес в него команды из предыдущего пункта.
Запустил файл на выполнение посредством GUI IDE VS CODE
```
vatarishin@MacBook-Air python-labs % /usr/bin/python3 /Users/vatarishin/lab_sem_5/python-labs/TEMA1/Pr0.py
Hello
Your name=Dmitriy
```
Попробовал альтернативный варинат запуска программы
```
vatarishin@MacBook-Air TEMA1 % python3 Pr0.py
Hello
Your name=Shin
```
Запустил на выполнение файл [prb1.py](prb1.py)
```
vatarishin@MacBook-Air python-labs % /usr/bin/python3 /Users/vatarishin/lab_sem_5/python-labs/TEMA1/prb1.py
Как Вас зовут? Дмитрий
Привет, Дмитрий
```
### 1.3 Изучение справки
```
help(print)
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
Help on built-in function input in module builtins:
```
Попробовал вызвать две команды справки на одной строке
```
help(print); help(input)
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
Help on built-in function input in module builtins:
input(prompt=None, /)
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.
```
### 1.4 Изучение примеров
Запустил файл [tdemo_chaos.py](tdemo_chaos.py)
Открылось окно GUI, где в случайном порядке рисуются точки, соедененные линиями

@ -0,0 +1,22 @@
# Индивидуальное контрольное задание по теме 1
Коваленко Дмитрий, А-01-23
## Вопрос 8
Как можно запустить на выполнение программу, исходный код которой находится в тексто-вом файле ABC.txt?
## Ответ
Запустить код написанный в .txt файле можно при помощи функции ```exec()```
Пример файла [ABC.txt](ABC.txt)
Способ запуска кода из txt файла приведен в [test.py](test.py)
Результат выполнения
```
vatarishin@MacBook-Air python-labs % /Library/Developer/CommandLineTools/usr/bin/python3 /Users/vatarishin/lab_sem_5/python-labs/
TEMA1/test.py
This line was executed from .txt file!
And this is two lines programm
```

@ -0,0 +1,2 @@
with open('/Users/vatarishin/lab_sem_5/python-labs/TEMA1/ABC.txt', 'r') as textScript:
exec(textScript.read())

@ -0,0 +1,4 @@
gg1=1.6 #значение в виде вещественного числа
hh1='Строка' #значение в виде символьной строки
73sr=3 #неправильное имя – начинается с цифры - будет диагностика!
and=7 #недопустимое имя – совпадает с ключевым словом - будет диагностика!

@ -0,0 +1,255 @@
# Отчет по теме 2
Коваленко Дмитрий, А-01-23
## 2 Базовые типы объектов
### 2.1 Изучение простых объектов
```py
>>> f1=16; f2=3
>>> f1,f2
(16, 3)
>>> f1;f2
16
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__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
TypeError: type() takes 1 or 3 arguments
>>> type(f2)
<class 'int'>
>>> del f1,f2
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
```
Видим, что переменные имеют тип `int`. При помощи `dir(var)` можно узнать методы объекта, а при вызове `dir()` можно посмотреть, какие переменные есть в памяти. Как можно видеть из последнего запуска `dir()`, переменные `f1`, `f2` были удалены из памяти программы.
### 2.2 Изучение правил именования
Создал программу [prog1.py](prog1.py) и записал в неё несколько комманд для проверки правил именования. Ожидаемо, получил ошибку на неправильном имени файла
```
vatarishin@MacBook-Air python-labs % /Library/Developer/CommandLineTools/usr/bin/python3 /Users/vatarishin/lab_sem_5/python-labs/
TEMA2/prog1.py
File "/Users/vatarishin/lab_sem_5/python-labs/TEMA2/prog1.py", line 3
73sr=3 #неправильное имя – начинается с цифры - будет диагностика!
^
SyntaxError: invalid syntax
```
### 2.3 Изучение списка ключевых слов
```
>>> import keyword
>>> kw = keyword.kwlist
>>> print(kw)
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
```
### 2.4 Выведение списка встроенных идентификаторов
```
>>> import builtins
>>> dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
```
Изучим функцию `zip()`
```
Help on class zip in module builtins:
class zip(object)
| zip(*iterables) --> A zip object yielding tuples until an input is exhausted.
|
| >>> list(zip('abcdefg', range(3), range(4)))
| [('a', 0, 0), ('b', 1, 1), ('c', 2, 2)]
|
| 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
| shortest argument is exhausted.
```
### 2.5 Рассмотрим значимость регистров
```
>>> Gg1=45
>>> gg1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'gg1' is not defined
>>> Gg1
45
```
### 2.6 Изучим простые типы объектов
Логический тип
```
>>> bb1=True; bb2=False
>>> bb1;bb2
True
False
>>> type(bb1)
<class 'bool'>
```
Прочие типы
```
>>> ii1=-1234567890
>>> ff1=-8.9876e-12 #экспоненциальная форма записи вещественного числа
>>> dv1=0b1101010 #Это – двоичное число. В объекте какого класса оно сохранено?
>>> vsm1=0o52765 #Это – восьмеричное число
>>> shest1=0x7109af6 #Это – шестнадцатеричное число
>>> cc1=2-3j
>>> a=3.67; b=-0.45
>>> cc2=complex(a,b) #Создается комплексное число
>>> cc2
(3.67-0.45j)
```
Символьные строки
```
>> ss1='Это - строка символов'
>>> ss1="Это - строка символов"
>>> ss1a="Это - \" строка символов \", \n \t выводимая на двух строках";print(ss1a)
Это - " строка символов ",
выводимая на двух строках
>>> ss1b= 'Меня зовут: \n Коваленко Д.М.'
>>> print(ss1b)
Меня зовут:
Коваленко Д.М.
>>> mnogo="""Нетрудно заметить , что в результате операции
... над числами разных типов получается число,
... имеющее более сложный тип из тех, которые участвуют в операции."""
>>> print(mnogo)
Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.
>>> ss1="Это - строка символов"
>>> ss1[0] #Это – символ «Э»
'Э'
>>> ss1[8] #А это – символ «р»
'р'
>>> ss1[-2] #А это – символ «о» (при знаке «-»(минус) отсчет от конца строки)
'о'
ss1[6:9] #Это часть строки – символы с 6-го индекса по 8-й (9-й не включается!)
ss1[13:] #Это часть строки – с 13-го индекса и до конца
ss1[:13] #Это часть строки – с начала и до 12-го индекса включительно
ss1[5:-8] #Это часть строки – с 5-го индекса и до 8-го от конца
ss1[3:17:2] #Часть строки – с 3-го по 16-й индексы с шагом 2
>>> ss1[17:3:-2]
'омсаот '
>>> ss1[4]='='
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> ss1=ss1[:4]+'='+ss1[5:]
>>> ss1
'Это = строка символов'
```
### 2.7 Изучим более сложные типы объектов
```
>>> spis1=[111,'Spisok',5-9j]
>>> spis1
[111, 'Spisok', (5-9j)]
>>> stup=[0,0,1,1,1,1,1,1,1]
>>> spis=[1,2,3,4,
... 5, 6, 7,
... 8, 9]
>>> stup[-8::2]
[0, 1, 1, 1]
>>> spis1[1]='Список'
>>> spis1
[111, 'Список', (5-9j)]
help(spis1.append)
Help on built-in function append:
append(object, /) method of builtins.list instance
Append object to the end of the list.
>>> spis1.append('New item')
>>> spis1+['New item']
[111, 'Список', (5-9j), 'New item', 'New item']
>>> spis1.pop(1)
'Список'
>>> spis2=[spis1,[4,5,6,7]]
>>> spis2
[[111, (5-9j), 'New item'], [4, 5, 6, 7]]
>>> spis2[0][1]
(5-9j)
>>> spis2[0][1]=78
>>> spis1
[111, 78, 'New item']
```
Видим, что при изменении вложенного списка, изменяется и сам исходный список. Это происходит потому что при создании `spis2` была использована ссылка на `spis1`. Чтобы списки были независимы, в `spis2` надо передовать копию списка.
Создадим свой объект-список
```myList1 = [1, '1', True, [1, '1', True]]```
### 2.8 Изучим кортежи
```
>>> kort1=(222,'Kortezh',77+8j)
>>> kort1
(222, 'Kortezh', (77+8j))
>>> kort1= kort1+(1,2)
>>> kort1
(222, 'Kortezh', (77+8j), 1, 2)
>>> kort1= kort1+(ss1b,)
>>> kort2=kort1[:2]+kort1[3:]
>>> kort2
(222, 'Kortezh', 1, 2, 'Меня зовут: \n Коваленко Д.М.')
>>> kort1.index(2)
4
>>> kort1.count(222)
1
>>> kort1[2]=90
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
kort0 = (0, '0', [False, False], (0, '0', False))
```
### 2.9 Изучим словари
```
>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> dic1['Orel']
56
>>> dic1['Pskov']=78
>>> dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
>>> sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
>>> sorted(dic1.values())
[45, 56, 78, 145]
>>> dic2={1:'mean',2:'standart deviation',3:'correlation'}
>>> dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
>>> dic3['statistics'][2]
'standart deviation'
>>> dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
>>> dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
>>> 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
```
### 2.10 Изучим множества
```
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
>>> mnoz1
{'двигатель', 'датчик', 'линия связи', 'микропроцессор'}
>>> len(mnoz1)
4
>>> 'датчик' in mnoz1
True
>>> mnoz1.add('реле')
>>> mnoz1.remove('линия связи')
>>> mnoz1
{'микропроцессор', 'реле', 'двигатель', 'датчик'}
>>> set1 = {1, 1, '1', "1", True, True, (1, '1')}
>>> set1
{1, '1', (1, '1')}
>>> len(set1)
3
```

@ -0,0 +1,41 @@
# Общее контрольное задание по теме 2
Коваленко Дмитрий, А-01-23
## Задание
• Создать переменную с именем `familia` и со значением - символьной строкой – своей фамилией в латинской транскрипции.
• Создать переменную со значением, совпадающим с первой буквой из `familia`.
• Создать переменную с именем `sp_kw` со значением – списком всей ключевых слов языка Python.
• Удалите из списка `sp_kw` значение `'nonlocal'`. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
• Создайте кортеж `kort_nam` с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это `tuple`.
• Напишите инструкцию, добавляющую в `kort_nam` имена еще двух студентов.
• Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
• Создайте словарь `dict_bas`, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам.
## Решение
```py
import keyword
familia = 'Kovalenko'
withLetK = familia[0]
sp_kw = keyword.kwlist
sp_kw.remove('nonlocal')
sp_kw
kort_nam = ('Дмитрий', 'Максим', 'Даниил', 'Дима')
type(kort_nam)
kort_nam = kort_nam+('Александр', 'Елизавета')
kort_nam.count('Дима')
dict_bas = {'строка': familia, 'Список': sp_kw, 'Кортеж': kort_nam}
```
```
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
>>> type(kort_nam)
<class 'tuple'>
>>> kort_nam.count('Дима')
1
```

@ -0,0 +1,32 @@
# Индивидуальное контрольное задание по теме 2
Коваленко Дмитрий, А-01-23
## Задание 9
Создайте два объекта
`u=[1,2,3,4,5]`
`v=[11,22,33,44,55]`
К какому классу относятся эти объекты? Напишите инструкцию создания нового объекта-множества `z` с элементами из `u` и `v`.
## Решение
```py
u = [1,2,3,4,5]
v = [11,22,33,44,55]
type(u)
type(v)
z = {*u, *v}
```
Вывод:
```py
>>> type(u)
<class 'list'>
>>> type(v)
<class 'list'>
>>> z = {*u, *v}
>>> z
{1, 2, 3, 4, 5, 33, 11, 44, 22, 55}
```

@ -0,0 +1,452 @@
# Отчет по теме 3
Коваленко Дмитрий, А-01-23
## 3 Операции с объектами
### 3.1 Преобразование в логический тип с помощью функции bool(<Объект>).
```
>>> logiz1=bool(56)
>>> logiz2=bool(0)
>>> logiz3=bool("Beta")
>>> logiz4=bool("")
>>> logiz1
True
>>> logiz2
False
>>> logiz3
True
>>> logiz4
False
```
### 3.2 Преобразование в целочисленный тип int и вещественный float
```
>>> tt1=int(198.6)
>>> tt2=int("-76")
>>> tt3=int("B",16)
>>> tt4=int("71",8)
>>> tt5=int("98.76")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '98.76'
```
В последней иструкции видим ошибку. Это происходит из-за того, что `int()` не может перевести строку в целочисленный тип, если указана дробная часть.
```
>>> flt1=float(789)
flt2=float(-6.78e2)
flt3=float("Infinity")
flt4=float("-inf")>>> flt2=float(-6.78e2)
>>> flt3=float("Infinity")
>>> flt4=float("-inf")
>>> flt1
789.0
>>> flt2
-678.0
>>> flt3
inf
>>> flt4
-inf
```
### 3.3 Преобразование десятичных чисел в другие системы счисления
```
>>> hh=123
>>> dv1=bin(hh)
>>> vos1=oct(hh)
>>> shs1=hex(hh)
>>> dv1
'0b1111011'
>>> vos1
'0o173'
>>> shs1
'0x7b'
>>> nDv1 = int(dv1, 2)
>>> nDv1
123
>>> nVos1 = int(vos1, 8)
>>> nVos1
123
>>> nShs1 = int(shs1, 16)
>>> nShs1
123
```
### 3.4 Преобразование в строку символов с помощью функции str(<Объект>)
```
>>> strk1=str(23.6)
>>> strk2=str(logiz3)
>>> strk3=str(["A","B","C"])
>>> strk4=str(("A","B","C"))
>>> strk5=str({"A":1,"B":2,"C":9})
>>> strk3
"['A', 'B', 'C']"
```
### 3.5 Преобразование элементов объекта в список с помощью функции list(<Объект>)
```
>>> spis1=list("Строка символов")
>>> spis2=list((124,236,-15,908))
>>> spis3=list({"A":1,"B":2,"C":9})
>>> spis3
['A', 'B', 'C']
```
### 3.6 Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>).
```
>>> kort7=tuple('Строка символов')
>>> kort8=tuple(spis2)
>>> kort9=tuple({"A":1,"B":2,"C":9})
>>> kort9
('A', 'B', 'C')
```
### 3.7 Удаление объектов
```
>>> del strk5, kort8
>>> strk5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'strk5' is not defined
```
### 3.8 Арифметические операции
Сложение и вычитание (+ и -)
```
>>> 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
>>> c=-24.6//12.1
>>> b
3
>>> c
-3.0
```
Получение остатка от деления (%)
```
>>> 148%33
16
>>> 12.6%3.8
1.2000000000000002
```
Возведение в степень (**).
```
>>> 14**3
2744
>>> e=2.7**3.6
>>> e
35.719843790663525
```
### 3.9 Операции с двоичными представлениями целых чисел
Двоичная инверсия
```
>>> dv1=9
>>> dv2=~dv1
>>> dv2
-10
```
Двоичное «И» (&) – побитовое совпадение двоичных представлений чисел
```
>>> 7&9
1
>>> 7&8
0
```
Двоичное «ИЛИ» (|)
```
>>> 7|9
15
>>> 7|8
15
>>> 14|5
15
```
Двоичное «исключающее ИЛИ»(^)
```
>>> 14^5
11
```
Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>)
```
>>> h=14
>>> g=h<<2
>>> g1=h>>1
>>> g2=h>>2
>>> g
56
>>> g1
7
>>> g2
3
```
### 3.10 Операции при работе с последовательностями (строками, списками, кортежами).
Объединение последовательностей (конкатенация)(+)
```
>>> 'Система '+'регулирования'
'Система регулирования'
>>> ['abc','de','fg']+['hi','jkl']
['abc', 'de', 'fg', 'hi', 'jkl']
>>> ('abc','de','fg')+('hi','jkl')
('abc', 'de', 'fg', 'hi', 'jkl')
```
Повторение (*)
```
>>> 'ля-'*5
'ля-ля-ля-ля-ля-'
>>> ['ку','-']*3
['ку', '-', 'ку', '-', 'ку', '-']
>>> ('кис','-')*4
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
>>> signal1=[0]*3+[1]*99
>>> signal1
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> signal2=(0,)*3+(1,)*5+(0,)*7
>>> signal2
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
```
Проверка наличия заданного элемента в последовательности (in)
```
>>> stroka='Система автоматического управления'
>>> 'автомат' in stroka
True
>>> 'ку' in ['ку','-']*3
True
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
False
```
Подстановка значений в строку с помощью оператора «%»
```
>>> stroka='Температура = %g %s %g'
>>> stroka % (16,' меньше ',25)
'Температура = 16 меньше 25'
>>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
### 3.11 Оператор присваивания
Обычное присваивание значения переменной (=)
```
zz=-12
```
Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
```
>>> zz +=5
>>> zz
-7
>>> zz -=3
>>> zz
-10
>>> stroka='Система'
>>> stroka+=' регулирования'
>>> stroka
'Система регулирования'
```
Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
```
>>> zz /= 2
>>> zz
-5.0
>>> zz *= 5
>>> zz
-25.0
```
Изучим оперции `//=`, `%=`, `**=`
```
>>> zz //= 2
>>> zz
-13.0
>>> zz %= 2
>>> zz
1.0
>>> zz **= 3
>>> zz
1.0
```
Множественное присваивание
```
>>> w=v=10
>>> n1,n2,n3=(11,-3,'all')
>>> n2
-3
>>> m1 = m2 = {1: '1', 2: '2'}
>>> m1
{1: '1', 2: '2'}
```
### 3.12 Логические операции
Операции сравнение
```
>>> w != v
False
```
Проверка наличия заданного элемента в последовательности или во множестве
```
>>> 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
```
Создание больших логических выражений с использованием соединительных слов: логическое «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not).
```
>>> a=17
>>> b=-6
>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
```
Проверка ссылок переменных на один и тот же объект (is)
```
>>> w=v=10
w is v
w1=['A','B']
v1=['A','B']
w1 is v1>>> w is v
True
>>> w1=['A','B']
>>> v1=['A','B']
>>> w1 is v1
False
```
результат последней проверки выдал Flase потому что мы создали два фактически разных списка, так как они находятся в разных ячейках памяти
### 3.13 Операции с объектами, выполняемые с помощью методов.
Методы для работы со строками
```
>>> stroka='Микропроцессорная система управления'
>>> stroka.find('пр')
5
>>> stroka.count("с")
4
>>> stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>> spis22=stroka.split(' ')
>>> stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
>>> stroka3=" ".join(spis22)
>>> stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
>>> stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
```
Изучим `format`
```
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'
```
Методы для работы со списками
```
>>> spsk = [1, 2, 3, 4, 5, 6]
>>> spsk.pop(2)
3
>>> spsk.append('c')
>>> spsk.insert(2,'a')
>>> spsk.count('a')
1
```
### 3.14 Изучим методы кортежей, множеств, словарей
```
tup = (1, 2, 3, 4)
>>> tup=tup+(5,7)
>>> tup
(1, 2, 3, 4, 5, 7)
>>> tup.count(2)
>>> len(tup)
6
set1 = {1, 1, '1', True}
>>> set1
{1, '1'}
>>> set1.pop()
1
>>> dir(set1)
['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
>>> map1 = {1: '1', 2: '2'}
>>> map1.keys()
dict_keys([1, 2])
>>> dir(map1)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
```

@ -0,0 +1,55 @@
# Общее контрольное задание по теме 3
Коваленко Дмитрий, А-01-23
## Задание
• Преобразовать восьмеричное значение 45 в целое число.\
• Создать объект-словарь `D` со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?\
• Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.\
• Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.\
• Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.\
• Определить список методов, доступных у ранее созданного словаря `D`. Поочередно использовать его методы `keys` и `values`, определить, что можно получить с применением этих методов.\
• Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
## Решение
```py
int('45', 8)
37
D = {"усиление":23, "запаздывание":12, "постоянная времени":78}
dKeys = list(D.keys())
dVals = list(D.values())
dTup = (*dKeys, *dVals)
((1788 // 24.8) % 3) ** 2.4
0.0
((~(13 & 27)) ^ 14) << 2
-32
listt = ['колебат'] * 4
'аткол' in (listt[1] + listt[2])
True
dir(D)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
D.keys()
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
D.values()
dict_values([23, 12, 78])
longS = 'Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.'
longS = longS.split(' ')
longS[longS.index('-')] = ','
longS.remove('данного')
longS
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения.', 'Из', 'символьной', 'строки', 'создать', 'список,', 'элементами', 'которого', 'будут', 'отдельные', 'слова', 'из', 'созданной', 'строки.', '', 'Заменить', 'в', 'списке', 'элемент', '«-»', 'на', '«,».', '', 'Удалить', 'из', 'списка', 'элемент', 'со', 'значением', '«данного».', 'Отобразить', 'получившийся', 'список.']
```

@ -0,0 +1,48 @@
# Тест 1 вариант 5
Коваленко Дмитрий, А-01-23
## Задание
1) Для чего предназначено предложение "Окно (Window)" главного меню?
2) Создайте объект-словарь с 8 элементами: ключи - фамилии студентов группы, значения - средние баллы по итогам сессии. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
3) Пополните словарь еще двумя элементами. Отобразите получившийся объект. Напишите инструкцию, позволяющую для указанного студента из словаря получить значение его среднего балла. Напишите инструкцию для получения списка всех студентов, представленных в словаре.
4) У одного из студентов средний балл оказался на 0.2 меньше указанного в словаре. Напишите инструкцию, исправляющую это значение в словаре. Отобразите полученный объект. Напишите инструкцию, вычисляющую общий средний балл для всех студентов, представленных в словаре.
5) Создайте список из названий 4-х учебных дисциплин и список с числом часов в неделю на изучение каждой из 4-х дисциплин. Напишите инструкцию, позволяющую создать словарь, объединяющий эти два списка.
## Решение
1) Предложение "Окно (Window)" в IDLE предназначено для переключения между открытыми вкладками (окнами)
2)
```py
marks = {'Иванов' : 4.3, 'Сидоров': 5, 'Смитт': 4, 'Гордеев': 4.5, 'Лыкова': 3.9, 'Кравченко': 4.1, 'Смирнов': 3, 'Ходюк': 4.8}
print(type(marks))
print(dir(marks))
```
3)
```py
marks['Ивачев'] = 4.3
marks['Мамакин'] = 3.8
print(marks)
print(f'Средний балл студента Смитта: {marks["Смитт"]}')
print(*marks.keys())
```
4)
```py
marks['Лыкова'] -= 0.2
print(marks)
print(f'Общий средний балл свех студентов в словаре: {sum(marks.values()) / len(marks)}')
```
5)
```py
subjects = ['Интеллектуальный анализ данных', 'Спортивные секции', 'Элементы систем управления', 'ПОАС']
hours = [2, 4, 3, 2]
subHour = dict(zip(subjects, hours))
print(subHour)
```

@ -0,0 +1,17 @@
### Предложение "Окно (Window)" в IDLE предназначено для переключения между открытыми вкладками (окнами)
marks = {'Иванов' : 4.3, 'Сидоров': 5, 'Смитт': 4, 'Гордеев': 4.5, 'Лыкова': 3.9, 'Кравченко': 4.1, 'Смирнов': 3, 'Ходюк': 4.8}
print(type(marks))
print(dir(marks))
marks['Ивачев'] = 4.3
marks['Мамакин'] = 3.8
print(marks)
print(f'Средний балл студента Смитта: {marks["Смитт"]}')
print(*marks.keys())
marks['Лыкова'] -= 0.2
print(marks)
print(f'Общий средний балл свех студентов в словаре: {sum(marks.values()) / len(marks)}')
subjects = ['Интеллектуальный анализ данных', 'Спортивные секции', 'Элементы систем управления', 'ПОАС']
hours = [64, 64, 60, 48]
subHour = dict(zip(subjects, hours))
print(subHour)

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

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

После

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

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

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

После

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

@ -0,0 +1,206 @@
# Отчет по теме 4
Коваленко Дмитрий, А-01-23
## 4 Встроенные функции
### 4.1 Изучим стандартные функции
функция `round`
```py
>>> round(123.456,1)
123.5
>>> round(123.456,0)
123.0
>>> round(123.456)
123
```
функция `range`
```py
>>> gg=range(76,123,9)
>>> list(gg)
[76, 85, 94, 103, 112, 121]
>>> range(23)
range(0, 23)
```
Получили последовательность от 0 до 22 с шагом 1
функция `zip`
```py
>>> qq = ['Kovalenko', 'Ivanov', 'Mahnov', 'Hodyuk']
>>> ff=zip(gg,qq)
>>> tuple(ff)
((76, 'Kovalenko'), (85, 'Ivanov'), (94, 'Mahnov'), (103, 'Hodyuk'))
```
функция `eval`
```py
>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=2
>>> dan
-146.0
```
функция `exec`
```py
>>> exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
>>> gg
221.456
```
самостоятельно изучим функции `divmod` и `map`
```py
a = map(lambda val: len(val), qq)
>>> print(list(a))
[9, 6, 6, 6]
>>> divmod(10, 3)
(3, 1)
```
### 4.2 Изучим функции модуля math
```py
>> import math
>>> dir(math)
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
>>> help(math.factorial)
factorial(x, /)
Find x!.
Raise a ValueError if x is negative or non-integral.
>>> math.factorial(5)
120
>>> math.sin(2 * math.pi / (7 + math.exp(0.23)))
0.6895048136223224
```
### 4.3 Изучим функции модуля cmath
```py
import cmath
>>> dir(cmath)
['__doc__', '__file__', '__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
```
### 4.4 Изучим функции модуля random
```py
>>> import random
dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_inst', '_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)
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.seed()
>>> randoms = [random.gauss(0, 1), random.random(), random.betavariate(1, 2), random.gammavariate(2, 3)]
randoms
[0.6215069973322431, 0.08807819378198645, 0.5664749235248212, 4.506587762379303]
```
### 4.5 Изучим функции модуля time
```py
>>> import time
>>> dir(time)
['CLOCK_MONOTONIC', 'CLOCK_MONOTONIC_RAW', 'CLOCK_PROCESS_CPUTIME_ID', 'CLOCK_REALTIME', 'CLOCK_THREAD_CPUTIME_ID', 'CLOCK_UPTIME_RAW', '_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock_getres', 'clock_gettime', 'clock_gettime_ns', 'clock_settime', 'clock_settime_ns', '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', 'tzset']
>>> c1=time.time()
>>> c1
1760084296.501437
>>> c2=time.time()-c1
>>> c2
19.090100049972534
>>> dat=time.gmtime()
>>> dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=8, tm_min=19, tm_sec=3, tm_wday=4, tm_yday=283, tm_isdst=0)
>>> dat.tm_mon
10
>>> dat.tm_min
19
>>> time.localtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=11, tm_min=22, tm_sec=32, tm_wday=4, tm_yday=283, tm_isdst=0)
>>> time.localtime(c1)
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=11, tm_min=18, tm_sec=16, tm_wday=4, tm_yday=283, tm_isdst=0)
```
### 4.6 Изучим графические функции
```py
>>> import pylab
>>> x=list(range(-3,55,4))
>>> t=list(range(15))
pylab.plot(t,x)
pylab.title('Первый график')
pylab.xlabel('время')
pylab.ylabel('сигнал')
pylab.show()
```
Полученный график сохранил как [Ris1.png](Ris1.png)
```py
>>> X1=[12,6,8,10,7]
>>> X2=[5,7,9,11,13]
pylab.plot(X1)
pylab.plot(X2)
pylab.show()
region=['Центр','Урал','Сибирь','Юг']
naselen=[65,12,23,17]
pylab.pie(naselen,labels=region)
pylab.show()
```
Полученный график сохранил как [Ris2.png](Ris2.png)
```py
X1=[12,6,8,10,7, 7, 7, 6, 12, 12, 12]
pylab.hist(X1)
pylab.show()
region=['Центр','Урал','Сибирь','Юг']
naselen=[65,12,23,17]
pylab.bar(region, naselen)
pylab.show()
```
### 4.7 Изучим функции модуля statistics
```py
import statistics
>>> dir(statistics)
>>> a = [1, 2, 3, 4, 5]
>>> statistics.mean(a)
3
>>> statistics.sqrt(9)
3.0
>>> statistics.exp(3)
20.085536923187668
```

@ -0,0 +1,36 @@
# Общее контрольное задание по теме 4
Коваленко Дмитрий, А-01-23
## Задание
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа `0.2+0.8j`, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.\
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.\
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели. \
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.\
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.\
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.\
## Решение
```py
from cmath import *
from time import localtime, mktime
from random import sample, choice, gauss
from string import ascii_letters
tuple(divmod(round(phase(0.2+0.8j), 2) * 20, 3))
now = localtime()
nowStr = f'{now.tm_hour}:{now.tm_min}'
days = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс']
rDays = sample(days, 3)
rNum = choice(range(14, 32, 3))
nNum = round(gauss(15, 4))
rLets = sample(list(ascii_letters), nNum)
updNow = localtime()
diff = (mktime(updNow) - mktime(now)) // 60
```

@ -0,0 +1,19 @@
# Индивидуальное контрольное задание по теме 4
Коваленко Дмитрий, А-01-23
## Задание 4
Напишите инструкцию определения текущего Московского времени. С задержкой на 5 секунд выведите его на экран по шаблону: «В Москве <> часов и <> минут».
## Решение
```py
from time import localtime, sleep
print('Смотрю время и вывожу на экран через 5 секунд')
time = localtime()
sleep(5)
print(f'В Москве {time.tm_hour} часов и {time.tm_min} минут')
```

@ -0,0 +1,6 @@
from time import localtime, sleep
print('Смотрю время и вывожу на экран через 5 секунд')
time = localtime()
sleep(5)
print(f'В Москве {time.tm_hour} часов и {time.tm_min} минут')

@ -0,0 +1,138 @@
# Отчет по теме 5
Коваленко Дмитрий, А-01-23
## 5 Блоки инструкций, управляющие инструкции
### 5.1 Изучим ветвления if
```py
porog = 12
rashod1 = 5
rashod2 = 7
dohod = 0
if rashod1 >= porog:
dohod = 12
elif rashod2 == porog:
dohod = 0
else:
dohod =- 8
>>> dohod
-8
if rashod1 >= 3 and rashod2 == 4:
dohod = rashod1
if rashod2 == porog or rashod1 < rashod2:
dohod = porog
if porog == 3:
dohod = 1
elif porog == 4:
dohod = 2
elif porog == 5:
dohod = 3
else:
dohod = 0
>>> dohod=2 if porog>=4 else 0
>>> if porog>=5 : rashod1=6; rashod2=0
```
### 5.2 Изучим цикл for
```py
temperatura = 5
for i in range(3, 18, 3):
temperatura += i
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]
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]
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)
301
...
...
436
```
Как можно видеть, программа не всегда выводит значения на экран. Это происходит из-за оперратора `break`, который завершает цикл, если сумма ss первысила 500. В этом случае `else` не выполняется.
```py
stroka='Это – автоматизированная система'
stroka1=""
for ss in stroka:
stroka1+=" "+ss
import math, pylab
sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
pylab.plot(sps2)
pylab.show()
```
Полученный график: ![ris1.png](ris1.png)
### 5.3 Изучим цикл while
```py
rashod = 300
while rashod:
print("Расход=",rashod)
rashod-=50
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
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
else:
pylab.plot(sps2)
pylab.show()
```
Полученный график: ![ris2.png](ris2.png)
```py
for chislo in range(250, 501):
kandidat =chislo // 2
while kandidat > 1:
if chislo%kandidat == 0:
print(chislo, ' имеет множитель ', kandidat)
break
kandidat -= 1
else:
print(chislo, ' является простым!')
267 имеет множитель 89
```

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

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

После

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

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

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

После

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

@ -0,0 +1,42 @@
# Общее контрольное задание по теме 5
Коваленко Дмитрий, А-01-23
## Задание
Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач:\
• Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите.\
• Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).\
• Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
## Решение
```py
from string import ascii_lowercase
text = '''Bury the light deep within
Cast aside, there's no coming home'''
for el in text:
index = ascii_lowercase.find(el.lower())
print(index + 1 if index != -1 else el, end='')
print()
words = ['Создайте', 'список', 'со', 'словами', 'из', 'задания', 'данного', 'пункта', 'Для', 'этого', 'списка', 'определите', 'есть', 'ли', 'в', 'нем', 'некоторое', 'заданное', 'значение', 'и', 'выведите', 'соответствующее', 'сообщение', 'либо', 'о', 'нахождении', 'элемента', 'либо', 'о', 'его', 'отсутствии', 'в', 'списке', 'проверить', 'как', 'с', 'имеющимся', 'так', 'и', 'с', 'отсутствующим', 'словом']
keyWord = input('Введите слово, искомое в списке: ')
result = f'есть в списке' if keyWord in words else 'отсутствует в списке'
print(f'Введенное Вами слово {keyWord} {result}')
surnames1 = ['Коваленко', 'Лыкова', 'Ходюк']
marks1 = [4.75, 3.75, 4.75]
surnames2 = ['Лыкова', 'Коваленко', 'Ходюк']
marks2 = [3.25, 4.5, 4.75]
student = input('Введите фамилию студента: ')
if student in surnames1:
print(f'Средний балл студента {student} за летнюю сессию {marks1[surnames1.index(student)]} и {marks2[surnames2.index(student)]} за зимнюю')
else:
print('Студент отсутствует в списке')
```

@ -0,0 +1,25 @@
from string import ascii_lowercase
text = '''Bury the light deep within
Cast aside, there's no coming home'''
for el in text:
index = ascii_lowercase.find(el.lower())
print(index + 1 if index != -1 else el, end='')
print()
words = ['Создайте', 'список', 'со', 'словами', 'из', 'задания', 'данного', 'пункта', 'Для', 'этого', 'списка', 'определите', 'есть', 'ли', 'в', 'нем', 'некоторое', 'заданное', 'значение', 'и', 'выведите', 'соответствующее', 'сообщение', 'либо', 'о', 'нахождении', 'элемента', 'либо', 'о', 'его', 'отсутствии', 'в', 'списке', 'проверить', 'как', 'с', 'имеющимся', 'так', 'и', 'с', 'отсутствующим', 'словом']
keyWord = input('Введите слово, искомое в списке: ')
result = f'есть в списке' if keyWord in words else 'отсутствует в списке'
print(f'Введенное Вами слово {keyWord} {result}')
surnames1 = ['Коваленко', 'Лыкова', 'Ходюк']
marks1 = [4.75, 3.75, 4.75]
surnames2 = ['Лыкова', 'Коваленко', 'Ходюк']
marks2 = [3.25, 4.5, 4.75]
student = input('Введите фамилию студента: ')
if student in surnames1:
print(f'Средний балл студента {student} за летнюю сессию {marks1[surnames1.index(student)]} и {marks2[surnames2.index(student)]} за зимнюю')
else:
print('Студент отсутствует в списке')

@ -0,0 +1,24 @@
# Индивидуальное контрольное задание по теме 5
Коваленко Дмитрий, А-01-23
## Задание 1
Запишите свой e-mail – адрес в виде символьной строки. Напишите инструкции, разделяющие эту строку на две: строка1, содержащая все буквы из состава адреса, и строка 2, содержащая все остальные символы.
## Решение
```py
from string import ascii_lowercase as letters
email = 'KovalenkoDM@mpei.ru'
emailLetters = ''
emailSimbols = ''
for el in email:
if letters.find(el.lower()) != -1:
emailLetters += el
else:
emailSimbols += el
print(f'Letters in email are {emailLetters}\nSimbols in email are {emailSimbols}')
```

@ -0,0 +1,12 @@
from string import ascii_lowercase as letters
email = 'KovalenkoDM@mpei.ru'
emailLetters = ''
emailSimbols = ''
for el in email:
if letters.find(el.lower()) != -1:
emailLetters += el
else:
emailSimbols += el
print(f'Letters in email are {emailLetters}\nSimbols in email are {emailSimbols}')
Загрузка…
Отмена
Сохранить