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

...

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

Автор SHA1 Сообщение Дата
MakhnovGA 35a8e9c4e5 done lab 5
1 день назад
MakhnovGA 2ff5382146 re:lab4; re:task; test
2 недель назад
MakhnovGA 6a5e2f9a4c rework report lab3, test lab3; report and task lab4
4 недель назад
MakhnovGA 4bc65ebc86 lab 3 report and task; redact version of example task.md
4 недель назад
MakhnovGA c5c51546df lab2 redact and test.md lab2
1 месяц назад
MakhnovGA c2bb92e32d report lab2 and task lab2
1 месяц назад
MakhnovGA 7b5538000c lab1 final and task.md
2 месяцев назад
MakhnovGA d23001446f re: lab1
2 месяцев назад
MakhnovGA 2163eef623 revert c31b925579
2 месяцев назад
MakhnovGA c31b925579 lab1
2 месяцев назад

@ -1,15 +1,10 @@
# Общее контрольное задание по теме 0 # Общее контрольное задание по теме
Иванов Иван, А-01-25 Махнов Георгий, А-01-23
## Задание ## Задание
Создать переменную `name`, содержащую ваше имя. Определить тип этой переменной.
## Решение ## Решение
```py
>>> name = 'Иван'
>>> type(name)
'str'
```

@ -1,6 +1,6 @@
# Индивидуальное контрольное задание по теме 0 # Индивидуальное контрольное задание по теме 0
Иванов Иван, А-01-25 Махнов Георгий, А-01-23
## Задание ## Задание

@ -0,0 +1,6 @@
#Программа по Теме 1 Махнов Георгий
print('Hello')
name = input("Как Вас зовут? ")
print("Привет,", name)
import os
os.chdir("C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA1")

@ -0,0 +1,112 @@
# Отчет по теме 1
Махнов Георгий, А-01-23
## Тема 1. Знакомство с интерпретатором и интерактивной оболочкой IDLE
## 2 задание
```
PS C:\Users\gmack\OneDrive\Рабочий стол\3 KURS\LABS\python-labs\TEMA1> & C:/Users/gmack/AppData/Local/Programs/Python/Python312/python.exe
Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Ctrl click to launch VS Code Native REPL
>>>
```
## 3 задание
```
>>> print('Hello')
Hello
```
## 4 задание
```
>>> h=input('Your name=')
Your name=Gosha
```
## 5 задание
```
>>> exit()
```
## 8 задание
```
import os
os.chdir("C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA1")
```
## 10 задание
![Файл prb0.py](prb0.py)
```
```
## 11 задание
```PS C:\Users\gmack\OneDrive\Рабочий стол\3 KURS\LABS\python-labs\TEMA1> python prb0.py```
```
Hello
Как Вас зовут? Gosha
Привет, Gosha
```
## 12 задание.
Открыл каталог __pycaсhe__, нашел там файл Pr0.cpython-34.pyc
После открытия в тектстовом редакторе обнаружил символы - байт-код, который был создан при запуске программы Pr0.py и служит для ускорения повторного запуска программы
## 14 задание
```
>>> help(print)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
```
```
>>> help(print); help(input)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
Help on built-in function input in module builtins:
input(prompt='', /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
```
## 15 задание
```
>>> import prb0
Hello
Как Вас зовут? Gosha
Привет, Gosha
>>> import tdemo_chaos
```

@ -0,0 +1,11 @@
# Общее контрольное задание по теме 1
Махнов Георгий, А-01-23
## Задание
Если требуется повторить с небольшим изменением ранее введенную инструкцию, работая в командном окне IDLE, как это лучше сделать?
## Ответ на вопрос
Можно в командном окне IDLE навести курсор на нужную команду, нажать Enter и редактированием изменить её на нужную.

@ -0,0 +1,352 @@
# Отчет по теме 2
Махнов Георгий, А-01-23
## Тема 2. Базовые типы объектов
## задание 2
#### Изучим операторы присваивания, функцию для определения существующих объектов dir и функцию для определения типа объекта type
```
>>> f1 = 16; f2 = 3
>>> f1,f2
(16, 3)
>>> f1;f2
16
3
>>> dir(f1)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
>>> type(f2)
<class 'int'>
>>> del f1,f2
>>> f1,f2
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
f1,f2
NameError: name 'f1' is not defined
```
## задание 3.
#### Изучим правила именования объектов в Python
```
>>> ggl = ,6
SyntaxError: invalid syntax
>>> ggl = 1,6
>>> hh='Строка'
>>> 73sr=3
SyntaxError: invalid syntax
>>> and=7
SyntaxError: invalid syntax
```
## задание 4.
#### Выведем список ключевых слов
```
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', '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.
#### Выведем список встроенных идентификаторов
```
>>> import builtins
>>> dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError',
'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError',
'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False',
'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError',
'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt',
'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented',
'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', '
RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration',
'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',
'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all',
'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals',
'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round',
'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
```
#### Изучим и проверим назначение функций abs, len, max, min, pow, round, sorted, sum, zip
```
>>> x = -3
>>> abs(x)
3
>>> a = [1,2,3,4,5,8]
>>> len(a)
6
>>> max(a)
8
>>> min(a)
1
>>> pow(x,2)
9
>>> round(2.1989)
2
>>> b = [13,5,2,9,1,0]
>>> sorted(b)
[0, 1, 2, 5, 9, 13]
>>> sum(a)
23
>>> x = zip(a,b)
>>> print(list(x))
[(1, 13), (2, 5), (3, 2), (4, 9), (5, 1), (8, 0)]
```
## задание 6.
#### Убедимся, что Python чувствителен к регистру и что переменные, которые различаются размером буквы, будут разными
```
>>> Gg1=45
>>> gg1,Gg1
(1.6, 45)
```
## задание 7.
#### Изучим простые базовые типы объектов: логический (bool), целый (int), вещественный (float), комплексный (complex), строка символов (str).
### 7.1 Логический объект
```
>>> bb1=True; bb2=False
>>> bb1;bb2
True
False
>>> type(bb1)
<class 'bool'>
```
### 7.2 Целочисленные, комплексные объекты, объекты с разной системой счисления
```
>>>ii1=-1234567890
>>>ff1=-8.9876e-12
>>>dv1=0b1101010
>>> type(dv1)
<class 'int'>
>>>vsm1=0o52765
>>>shest1=0x7109af6
>>>cc1=2-3j
>>>a=3.67; b=-0.45
>>>cc2=complex(a,b)
>>> cc2
(3.67-0.45j)
```
### 7.3 Строки
```
>>>ss1='Это - строка символов'
>>>ss1="Это - строка символов"
>>> ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
>>> print(ss1a)
Это - " строка символов ",
выводимая на двух строках
>>> ss1b= 'Меня зовут: \n Георгий'
>>> print(ss1b)
Меня зовут: \n Георгий
>>>mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции."""
>>>print(mnogo)
Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.
>>> ss1[0]
'Э'
>>> ss1[8]
'р'
>>> ss1[-2]
'о'
>>> ss1[6:9]
'стр'
>>> ss1[13:]
'символов'
>>> ss1[5:-8]
' строка '
>>> ss1[3:17:2]
' тоасм'
>>> ss1[17:3:-2]
'омсаот '
>>> ss1[17] = ss1[-4]
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
ss1[17] = ss1[-4]
TypeError: 'str' object does not support item assignment
>>> ss1[4]='=' # Будет диагностика!
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
ss1[4]='=' # Будет диагностика!
TypeError: 'str' object does not support item assignment
>>> ss1b = ss1b[0:4] + ss1b[11:] + " " + ss1b[5:10]
>>> ss1b
'Меня \n Георгий зовут'
```
#### Самостоятельно придумаем значения и создадим объекты разных типов. После этого отобразим типы и значения созданных объектов.
```
>>> six_int = 0x7109af6
>>> num_one = 1
>>> num_two = 3.75
>>> compl = complex(num_one, num_two)
>>> print(f"six_int => {six_int} => {type(six_int)} \n num_one => {num_one} => {type(num_one)}
\n num_two => {num_two} => {type(num_two)} \n compl => {compl} => {type(compl)}")
six_int => 118528758 => <class 'int'>
num_one => 1 => <class 'int'>
num_two => 3.75 => <class 'float'>
compl => (1+3.75j) => <class 'complex'>
```
## задание 8. Изучим более сложные типы объектов: списки (list), кортежи (tuple), словари (dict), множества (set).
### 8.1 Списки (list)
```
>>> 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,10]
>>> spis1[-1]
(5-9j)
>>> stup[-8::2]
[0, 1, 1, 1]
>>> spis1[1]='Список'
>>> spis1
[111, 'Список', (5-9j)]
>>> len(spis1)
3
>>> spis1[1]='Список'
>>> spis1
[111, 'Список', (5-9j)]
>>> len(spis1)
3
>>> spis1.append('New item')
>>> spis1+["New item"]
[111, 'Список', (5-9j), 'New item', 'New item']
>>> spis1.append(ss1b)
>>> spis1
[111, 'Список', (5-9j), 'New item', 'Меня \n Георгий зовут']
>> spis1.pop(1)
'Список'
>>> spis1
[111, (5-9j), 'New item', 'Меня \n Георгий зовут']
>>> spis1.extend([1,2,3])
>>> spis1
[111, (5-9j), 'New item', 'Меня \n Георгий зовут', 1, 2, 3]
>>> spis_1 = spis1.copy()
>>> spis_1
[111, (5-9j), 'New item', 'Меня \n Георгий зовут', 1, 2, 3]
>>> spis_1.index(1)
4
>>> spis_1.count(3)
1
>>> spis_1.reverse()
>>> spis_1
[3, 2, 1, 'Меня \n Георгий зовут', 'New item', (5-9j), 111]
>>> spis_1.clear()
>>> spis_1
[]
>>> spis_1.extend([1,2,3,2,5,4,6])
>>> spis_1.sort()
>>> spis_1
[1, 2, 2, 3, 4, 5, 6]
>>> spis2=[spis1,[4,5,6,7]]
>>> spis2
[[111, (5-9j), 'New item', 'Меня \n Георгий зовут', 1, 2, 3], [4, 5, 6, 7]]
>>> spis2[0][1]
(5-9j)
>>> spis2[0][1]=78
>>> spis2[0][1]
78
>>> spis1
[111, 78, 'New item', 'Меня \n Георгий зовут', 1, 2, 3]
```
#### Придумаем и создадим свой объект-список, элементами которого будут объекты разных типов: число, строка, логическое значение, список
```
>>> rand_list = [2, 'stringgg', True, [1,2,3]]
>>> rand_list
[2, 'stringgg', True, [1, 2, 3]]
```
### 8.2 Кортежи (tuple)
```
>>> kort1=(222,'Kortezh',77+8j)
>>> kort1
(222, 'Kortezh', (77+8j))
>>> kort1= kort1+(1,2)
>>> kort1
(222, 'Kortezh', (77+8j), 1, 2)
>>> kort1 = kort1 + (ss1b,)
>>> kort1
(222, 'Kortezh', (77+8j), 1, 2, 'Меня \n Георгий зовут')
>>> kort2=kort1[:2]+kort1[3:]
>>> kort2
(222, 'Kortezh', 1, 2, 'Меня \n Георгий зовут')
>>> kort2.index(2)
3
>>> 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
```
#### Создадим объект-кортеж с элементами разных типов: число, строка, список, кортеж.
```
>>> kort_rand = (1, 'string', [1,4,2], (3,'r'))
>>> kort_rand
(1, 'string', [1, 4, 2], (3, 'r'))
```
### 8.3 Словарь (dict)
```
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> 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'}
>>> dic2
{1: 'mean', 2: 'standart deviation', 3: 'correlation'}
>>> dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
>>> dic3
{'statistics': {1: 'mean', 2: 'standart deviation', 3: 'correlation'}, 'POAS': ['base', 'elementary', 'programming']}
>>> dic3['statistics'][2]
'standart deviation'
>>> dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
>>> dic4
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня \n Георгий зовут'}
>>> dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
>>> dic5
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня \n Георгий зовут'}
```
#### Самостоятельно придумаем объект-кортеж с 7 элементами и объект-список с 5 элементами и попробуйте создать из них словарь с помощью функций dict и zip. В словаре будет всего лишь 5 объектов, так как функция zip будет объединять с первых элементов обоих объектов до тех пор, пока не закончится значения одного из объектов
```
>>> cort_1 = {87, 83, 84, 85, 95, 82, 86}
>>> list_1 = ["ESU", "IAD", "TAU", "NODES", "Nets"]
>>> dict_1 = dict(zip(cort_1, list_1))
>>> dict_1
{82: 'ESU', 83: 'IAD', 84: 'TAU', 85: 'NODES', 86: 'Nets'}
```
### 8.4 Множество (set)
```
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
>>> mnoz1
{'линия связи', 'двигатель', 'датчик', 'микропроцессор'}
>>> len(mnoz1)
4
>>> 'датчик' in mnoz1
True
>>> mnoz1.add('реле')
>>> mnoz1
{'датчик', 'линия связи', 'реле', 'микропроцессор', 'двигатель'}
>>> mnoz1.remove('линия связи')
>>> mnoz1
{'датчик', 'реле', 'микропроцессор', 'двигатель'}
```
#### Самостоятельно придумаем объект-множество с элементами разных типов и попробуйте с ним выполнить разные операции.
```
>>> mnoz_2 = {2, 15, 'hi', 15, 7j-13, 'hi', True}
>>> mnoz_2
{True, 2, 'hi', (-13+7j), 15}
>>> mnoz_2.remove(2)
>>> mnoz_2
{True, 'hi', (-13+7j), 15}
>>> mnoz_2.add(2)
>>> mnoz_2
{True, 2, 'hi', (-13+7j), 15}
>>> len(mnoz_2)
5
```

@ -0,0 +1,57 @@
# Общее контрольное задание по теме
Махнов Георгий, А-01-23
## Задание
Общее контрольное задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности ин-струкций, выполняющих следующие действия:
• Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции.
• Создать переменную со значением, совпадающим с первой буквой из familia.
• Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
• Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
• Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
• Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
• Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
• Создайте словарь dict_bas, в котором ключами являются русские названия типов перемен-ных, использованных в предыдущих операторах, а значениями – ранее созданные пере-менные, соответствующие этим типам.
## Решение
```
>>> familia = "Mahnov"
>>> familia
'Mahnov'
>>> firstFamiliaLetter = familia[0]
>>> firstFamiliaLetter
'M'
>>> 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']
>>> kort_nam = ("Георгий", "Данил", "Дима", "Артём")
>>> kort_nam
('Георгий', 'Данил', 'Дима', 'Артём')
>>> type(kort_nam)
<class 'tuple'>
>>> kort_nam += ("Паша","Максим")
>>> kort_nam
('Георгий', 'Данил', 'Дима', 'Артём', 'Паша', 'Максим')
>>> kort_nam.count("Дима")
1
>>> dict_bas = {"Строка":familia,"Список":sp_kw,"Кортеж":kort_nam}
>>> dict_bas
{'Строка': 'Mahnov', 'Список': ['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'], 'Кортеж': ('Георгий', 'Данил', 'Дима', 'Артём', 'Паша', 'Максим')}
```

@ -0,0 +1,31 @@
# Индивидуальное контрольное задание по теме 2
Махнов Георгий, А-01-23
## Задание 3
Пусть созданы два объекта с помощью инструкций:
b1={'d':23,'f':11,'k':45}
b2={'u':6,'v':67}
К какому классу относятся эти объекты? Как создать объект того же класса со всеми 5 элементами?
## Решение
Оба объекта относятся к классу словарь (dict), так как в них присутствуют пара "ключ:значение". Также это можно проверить путем команды:
```
>>> b1={'d':23,'f':11,'k':45}
>>> b2={'u':6,'v':67}
>>> type(b1)
<class 'dict'>
>>> type(b2)
<class 'dict'>
```
Создать объект класса dict со всеми 5 элементами можно путем создания нового объекта с добавлением распакованных словарей b1 и b2
```
>>> b_combined = {**b1, **b2}
>>> b_combined
{'d': 23, 'f': 11, 'k': 45, 'u': 6, 'v': 67}
```

@ -0,0 +1,509 @@
# Отчет по теме 3
Махнов Георгий, А-01-23
## Тема 3. Операции с объектами
## Задание 2 Преобразование простых базовых типов объектов.
### 2.1 Преобразование в логический тип с помощью функции bool(<Объект>).
```
>>> logiz1=bool(56)
>>> logiz2=bool(0)
>>> logiz3=bool("Beta")
>>> logiz4=bool("")
>>>
>>> type(logiz1)
<class 'bool'>
>>> type(logiz2)
<class 'bool'>
>>> type(logiz3)
<class 'bool'>
>>> type(logiz4)
<class 'bool'>
```
### 2.2 2.2. Преобразование в целое десятичное число объекта с заданной системой счисления осуществ-ляется с помощью функции int(<Объект>[,<Система счисления, в которой определен объ-ект>]). По умолчанию система счисления принимается десятичной.
```
>>> tt1=int(198.6) #Отбрасывается дробная часть
>>> tt2=int("-76")
>>> tt3=int("B",16)
>>> tt3=int("B",16)
>>> tt4=int("71",8)
>>> tt1
198
>>> tt2
-76
>>> tt3
11
>>> tt4
57
>>> 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")
>>> flt1
789.0
>>> flt2
-678.0
>>> flt3
inf
>>> flt4
-inf
```
### 2.3 Преобразование десятичных чисел в другие системы счисления
```
>>> hh=123
>>> dv1=bin(hh)
>>> vos1=oct(hh)
>>> shs1=hex(hh)
>>> hh
123
>>> dv1
'0b1111011'
>>> vos1
'0o173'
>>> shs1
'0x7b'
>>> int(dv1, 2)
123
>>> int(vos1, 8)
123
>>> int(shs1, 16)
123
```
## Задание 3.Изучим преобразования более сложных базовых типов объектов
### 3.1 Преобразование в строку символов с помощью функции 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})
>>> strk1
'23.6'
>>> strk2
'True'
>>> strk3
"['A', 'B', 'C']"
>>> strk4
"('A', 'B', 'C')"
>>> strk5
"{'A': 1, 'B': 2, 'C': 9}"
```
### 3.2 Преобразование элементов объекта в список с помощью функции list(<Объект>).
```
>>> spis2=list((124,236,-15,908))
>>> spis3=list({"A":1,"B":2,"C":9})
>>> spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
>>> spis2
[124, 236, -15, 908]
>>> spis3
['A', 'B', 'C']
>>> spis_val = list({"A":1,"B":2,"C":9}.values())
>>> spis_val
[1, 2, 9]
```
### 3.3 3.3. Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>).
```
>>> kort7=tuple('Строка символов')
>>> kort8=tuple(spis2)
>>> kort9=tuple({"A":1,"B":2,"C":9})
>>> kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
>>> kort8
(124, 236, -15, 908)
>>> kort9
('A', 'B', 'C')
```
### 3.4 Удаление объектов.
```
>>> del strk5, kort8
>>> strk5, kort8
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
>>> kort8
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
>>> my_fio = "Махнов Г.А."
>>> list_fio = list(my_fio)
>>> list_fio
['М', 'а', 'х', 'н', 'о', 'в', ' ', 'Г', '.', 'А', '.']
>>> tuple_fio = tuple(list_fio)
>>> tuple_fio
('М', 'а', 'х', 'н', 'о', 'в', ' ', 'Г', '.', 'А', '.')
>>> new_str_fio = "".join(tuple_fio)
>>> new_str_fio
'Махнов Г.А.'
```
## Задание 4 Арифмитические операции
### 4.1 Сложение и вычитание (+ и -)
```
>>> 12+7+90
109
>>> 5.689e-1 - 0.456
0.11289999999999994
>>> 23.6+54
77.6
>>> 14-56.7+89
46.3
```
### 4.2 Умножение (*)
```
>>> -6.7*12
-80.4
```
### 4.3 Деление (/).
```
>>> -234.5/6
-39.083333333333336
>>> a=178/45
>>> type(a)
<class 'float'>
>>> a
3.9555555555555557
```
### 4.4 Деление с округлением вниз (//).
```
>>> b=178//45
>>> c=-24.6//12.1
>>> b, c
(3, -3.0)
>>> bc = 115//34
>>> bc
3
```
### 4.5 Получение остатка от деления (%).
```
>>> 148%33
16
>>> 12.6%3.8
1.2000000000000002
```
### 4.6 Возведение в степень (**).
```
>>> 14**3
2744
>>> e = 2.7**3.6
>>> e
35.719843790663525
>>> compl = complex(3, 6)
>>> compl
(3+6j)
>>> compl**2
(-27+36j)
>>> compl%33
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
>>> compl//3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
>>> compl/3
(1+2j)
>>> compl+13
(16+6j)
>>> compl+11.4
(14.4+6j)
```
## Задание 5 Операции с двоичными представлениями целых чисел
### 5.1 Двоичная инверсия (~).
```
>>> dv1 = 9
>>> dv2 = ~dv1
>>> dv2
-10
```
~1001
0110
1111 = 2^4
-1001
0110 = ~1001
~x = (2^N - 1 - x) = -(x+1)
Т.к. двоичная инверсия преобразует число по формуле -(x+1), где x - заданное число, то при задании числа 9 двоичная инверсия преобразует его в -10
### 5.2 Двоичное «И» (&)
```
>>> 7&9
1
>>> 7&8
0
```
### 5.3 Двоичное «ИЛИ» (|)
```
>>> 7|9
15
>>> 7|8
15
>>> 14|5
15
```
### 5.4 5.4. Двоичное «исключающее ИЛИ»(^)
```
>> 14^5
11
```
### 5.5 Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с допол-нением нулями, соответственно справа или слева.
```
>>> h=14
>>> g = h<<2
>>> g
56
>>> bin(g)
'0b111000'
>>> g1=h>>1
>>> g1
7
>>> g2=h>>2
>>> g2
3
```
## Задание 6. Операции при работе с последовательностями (строками, списками, кортежами).
### 6.1 Объединение последовательностей (конкатенация)(+)
```
>>> 'Система ' +'регулирования'
'Система регулирования'
>>> ['abc','de','fg']+['hi','jkl']
['abc', 'de', 'fg', 'hi', 'jkl']
>>> ('abc','de','fg')+('hi','jkl')
('abc', 'de', 'fg', 'hi', 'jkl')
```
### 6.2 Повторение (*)
```
>>> 'ля-'*5
'ля-ля-ля-ля-ля-'
>>> ['ку','-']*3
['ку', '-', 'ку', '-', 'ку', '-']
>>> ('кис','-')*4
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
>>> signal1=[0]*3+[1]*99
>>> signal2=(0,)*3+(1,)*5+(0,)*7
>>> signal1
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> signal2
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
```
### 6.3 Проверка наличия заданного элемента в последовательности (in)
```
>>> stroka='Система автоматического управления'
>>> 'автомат' in stroka
True
>>> 'ку' in ['ку','-']*3
True
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
False
```
### 6.4 Подстановка значений в строку с помощью оператора «%»
#### Пример 1
```
>>> stroka='Температура = %g %s %g'
>>> stroka
'Температура = %g %s %g'
>>> stroka % (16,' меньше ',25)
'Температура = 16 меньше 25'
```
#### Пример 2
```
>>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
## Задание 7 Оператор присваивания
### 7.1 Обычное присваивание значения переменной (=)
```
>>> zz = -12
>>> zz
-12
```
### 7.2 Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
```
>>> zz+=5
>>> zz
-7
>>> zz-=3
>>> zz
-10
>>> stroka='Система'
>>> stroka+=' регулирования'
>>> stroka
'Система регулирования'
```
### 7.3 Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
```
>>> zz/=2
>>> zz
-5.0
>>> zz*=5
>>> zz
-25.0
```
### 7.4 Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведе-ния в степень(**=)
```
>>> zz//=5
>>> zz
-5.0
>>> zz%=2
>>> zz
1.0
>>> zz+=1
>>> zz**=3
>>> zz
8.0
```
### 7.5 Множественное присваивание
```
>>> w=v=10
>>> w,v
(10, 10)
>>> n1,n2,n3=(11,-3,'all')
>>> n1,n2,n3
(11, -3, 'all')
>>> w=v=[1,2,3]
>>> w,v
([1, 2, 3], [1, 2, 3])
>>> w=v="str"
>>> w,v
('str', 'str')
>>> w=v={1:3, 2:8}
>>> w,v
({1: 3, 2: 8}, {1: 3, 2: 8})
>>> w=v={1,2,3}
>>> w,v
({1, 2, 3}, {1, 2, 3})
```
## Задание 8 8. Логические операции – при создании логических выражений, дающих в результате вычисле-ния значения True или False.
### 8.1 Операции сравнение: равенство (==), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=) – придумаем примеры этих операций. Сравним ранее созданные переменные w и v.
```
>>> 1==1
True
>>> 1!=1
False
>>> 1<1
False
>>> 1>1
False
>>> 1<=1
True
>>> 1>=1
True
>>> w==v
True
```
### 8.2 Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in).
```
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
>>> 'book' in mnoz1
True
>>> 'cap' in mnoz1
False
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> 'Vologda' in dic1
True
>>> 'Pskov' in dic1
False
>>> 56 in dic1.values()
True
>>> dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
>>> 'UII' in dct1['Depart']
True
>>> dct1['Depart'][1] == 'MM'
False
```
### 8.3 Создание больших логических выражений с использованием соединительных слов: логиче-ское «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not).
```
>>> a=17
>>> b=-6
>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
>>> (a<b) or (a>=b) and (a==b)
```
### 8.4 Проверка ссылок переменных на один и тот же объект (is).
```
>>> w=v=10
>>> w is v
True
>>> w1 = ["A", "B"]
>>> v1 = ["A", "B"]
>>> w1 is v1
False
```
w1 и v1 не являются одним и тем же объектом в памяти, поэтому is выдал ответ False
## Задание 9 Операции с объектами, выполняемые с помощью методов.
```
>>> 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 Методы для работы со строками.
```
>>> stroka.find('пр')
5
>>> stroka.count("с")
4
>>> stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>> spis22=stroka.split(' ')
>>> stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
>>> stroka3=" ".join(spis22)
>>> stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
>>> stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
>>> strk1='Момент времени {}, значение = {}'
>>> strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
>>> strk2='Момент времени {1}, значение = {0}:{2}'
>>> 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 Методы для работы со списками.
```
>>> spsk = [23,56,"str", 10, True]
>>> 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.append('c')
>>> spsk.insert(2,'a')
>>> spsk.count('a')
1
>>> spsk
[23, 56, 'a', 10, True, 'c']
```
### 9.3 Самостоятельно создадим кортеж и изучим применение его методов.
```
>>> my_cort = (1, "hi", 13, 5,86)
>>> dir(my_cort)
['__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']
>>> my_cort.count(13)
1
>>> my_cort.index("hi")
1
```
### 9.4 Также самостоятельно изучим методы словарей и множеств
```
>>> my_dict = {"math":13, "physics": 11, "history": 15}
>>> dir(my_dict)
['__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']
>>> my_set = {31, 12, "set", 1,45}
>>> dir(my_set)
['__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']
```

@ -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, определить, что можно получить с применением этих методов.
• Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
## Решение
```
>>> int("45", 8)
37
>>> D = {"усиление":23, "запаздывание":12, "постоянная времени":78}
>>> D
{'усиление': 23, 'запаздывание': 12, 'постоянная времени': 78}
>>> keys_d = list(D.keys())
>>> values_d = list(D.values())
>>> keys_d, values_d
(['усиление', 'запаздывание', 'постоянная времени'], [23, 12, 78])
>>> tuple_d = tuple(keys_d + values_d)
>>> tuple_d
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
```
Кортежи являются неизменяемыми, в то время как списки можно изменить.
```
>>> ((1768//24.8)%3)**2.4
5.278031643091577
>>> ((~(13 & 27)) ^ 14) << 2
-32
>>> kolebat = ["колебат"]*4
>>> kolebat
['колебат', 'колебат', 'колебат', 'колебат']
>>> 'колебат' in (kolebat[1]+kolebat[2])
True
>>> D.keys()
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
>>> D.values()
dict_values([23, 12, 78])
>>> str_d = "Создать объект - символьную строку с текстом данного предложения."
>>> str_list = str_d.split()
>>> str_list
>>> str_list[str_list.index("-")] = ","
>>> str_list.remove("данного")
>>> str_list
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения.']
```

@ -0,0 +1,55 @@
# Тест по модулю 1
Махнов Георгий, А-01-23
## Задание
M1_10
1) Какова роль компилятора в среде Python? Чем отличаются файлы с расширением .pyc от файлов с расширением .py?
2) Напишите инструкцию, создающую список со словами из данного предложения. Подсчитайте и отобразите на экране число слов.
3) Создайте кортеж с именами 10 любых студентов вашей группы. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
4) Превратите кортеж во множество. Подсчитайте число элементов множества и отобразите на экране с помощью формата по шаблону: "Во множестве ХХ студентов".
5) Напишите инструкцию, создающую строку из элементов списка из п.2. Отобразите строку на экране.
## Решение
1) Компилятор в Питоне преобразует исходный код в байт-код, который может быть выполнен компьютером и помогает повысить скорость и производительность. Файл .pyc отличается от файла .py тем, что в последнем содержится читаемый человеком код, и служит для разработки, в то время как .pyc содержит в себе байт-код и служит для ускорения запуска программы.
2)
```
>>> sttr = "Напишите инструкцию, создающую список со словами из данного предложения."
>>> list_sttr = list(sttr.split())
>>> list_sttr
['Напишите', 'инструкцию,', 'создающую', 'список', 'со', 'словами', 'из', 'данного', 'предложения.']
>>> len(list_sttr)
9
```
3)
```
>>> fio_tuple = ('Дима', 'Данил','Паша','Лиза','Георгий','Катя','Максим','Вадим','Артем','Никита')
>>> fio_tuple
('Дима', 'Данил', 'Паша', 'Лиза', 'Георгий', 'Катя', 'Максим', 'Вадим', 'Артем', 'Никита')
>>> type(fio_tuple)
<class 'tuple'>
>>> dir(fio_tuple)
['__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']
```
4)
```
>>> list_tuple = set(fio_tuple)
>>> list_tuple
{'Паша', 'Максим', 'Артем', 'Данил', 'Никита', 'Лиза', 'Дима', 'Вадим', 'Катя', 'Георгий'}
>>> print("Во множестве ", len(list_tuple), " студентов")
Во множестве 10 студентов
```
5)
```
>>> print(" ".join(list_sttr))
Напишите инструкцию, создающую список со словами из данного предложения.
```

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

@ -0,0 +1,293 @@
# Отчет по теме 4
Махнов Георгий, А-01-23
## Тема 4. Встроенные функции
### 2.1. Функция round – округление числа с заданной точностью.
```
>>> 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'>
```
Ответы различаются тем, что в первом вызове мы округляем до 1 знака после запятой, во втором вызове мы округляем до 0 знака после запятой (т.е. до целого числа)
```
>>> round(123.456)
123
>>> type(round(123.456))
<class 'int'>
```
### 2.2. Функция range – создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1.
```
>>> gg=range(76,123,9)
>>> gg
range(76, 123, 9)
>>> list(gg)
[76, 85, 94, 103, 112, 121]
>>> 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]
```
Получается объект с целыми числами с шагом 1 от 0 до 22.
### 2.3. Функция zip – создание общего объекта, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей (zip – застежка-«молния»)
```
>>> qq = ['Махнов','Лазарев','Коваленко','Иванов']
>>> ff=zip(gg,qq)
>>> ff
<zip object at 0x0000018777428980>
>>> tuple(ff)
((76, 'Махнов'), (85, 'Лазарев'), (94, 'Коваленко'), (103, 'Иванов'))
>>> ff[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'zip' object is not subscriptable
```
В кортеже содержится 4 элемента, так как zip() объединяет 2 объекта по длине меньшего из них (в нашем случае qq, 4 объекта).
### 2.4. Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки.
```
>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=13.48
>>> dan
-88.6
```
### 2.5. Функция exec – чтение и выполнение объекта-аргумента функции.
```
>>> exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
>>> gg
221.456
```
exec() отличается от eval() тем, что eval() выполняет выражения (5*fff-156, 12+fff и т.д.), а exec() выполняет инструкции (к примеру input())
### 2.6. Самостоятельно изучите и попробуйте применить функции abs, pow, max, min, sum, divmod, len, map.
```
>>> abs(-13)
13
>>> pow(-13, 2)
169
>>> max(-13, 12)
12
>>> min(-13, 12)
-13
>>> sum([-13, 12])
-1
>>> divmod(13, 3)
(4, 1)
>>> list(map(int, [14.3, 15.6]))
[14, 15]
```
## 3. Функции из стандартного модуля math – совокупность разнообразных математических функций.
```
>>> 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', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
>>> help(math.factorial)
Help on built-in function factorial in module math:
factorial(n, /)
Find n!.
Raise a ValueError if x is negative or non-integral.
>>> math.factorial(5)
120
>>> from math import *
>>> sin(pi/2)
1.0
>>> acos(0.5)
1.0471975511965979
>>> degrees(13)
744.8451336700703
>>> radians(pi/2)
0.027415567780803774
>>> exp(3)
20.085536923187668
>>> log(4)
1.3862943611198906
>>> log(4,2)
2.0
>>> log10(4)
0.6020599913279624
>>> ceil(3.1)
4
>>> ceil(-13.3)
-13
>>> floor(-13.3)
-14
>>> pi
3.141592653589793
>>> sin(2*pi/(7+exp(0.23)))
0.6895048136223223
```
### 4. Функции из модуля cmath – совокупность функций для работы с комплексными числами.
```
>>> import cmath
>>> from cmath import *
>>> 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']
>>> sqrt(1.2-0.5j)
(1.118033988749895-0.22360679774997896j)
>>> cmath.phase(1-0.5j)
-0.4636476090008061
```
### 5. Стандартный модуль random – совокупность функций для выполнения операций с псевдослу-чайными числами и выборками.
```
>>> from random import *
>>> dir(random)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
>>> help(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.
>>> seed()
```
seed() инициализирует начальное состояние генератора псевдослучайных чисел, для воспроизводимости результатов и представления случайных параметров. Без заадния seed() начальное состояние будет зависить от времени запуска программы или же текущего времени
```
>>> random()
0.9886498397075144
>>> uniform(1, 4)
2.780130303169699
>>> randint(1, 5)
5
>>> gauss(1, 4)
-1.8813369397077917
>>> lst = [1,4,3,5,6]
>>> shuffle(lst)
>>> print(lst)
[4, 6, 3, 1, 5]
>>> sample(lst, 3)
[3, 1, 5]
>>> betavariate(1, 3)
0.13265164490875223
>>> gammavariate(1,3)
6.693731601234578
>>> [uniform(1,3), gauss(1,3), betavariate(1,3), gammavariate(1,3)]
[2.727738971034954, 0.6065095462022692, 0.454597873888903, 1.6408773406150745]
```
### 6. Функции из модуля time – работа с календарем и со временем.
```
>>> from time import *
>>> dir(time)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
>>> c1 = time()
>>> c1
1760084354.1531947
>>> c2=time()-c1
>>> c2
7.051163673400879
>>> gmtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=8, tm_min=19, tm_sec=40, tm_wday=4, tm_yday=283, tm_isdst=0)
>>> dat = gmtime()
>>> dat.tm_mon
10
>>> dat.tm_hour, dat.tm_min
(8, 20)
>>> localtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=11, tm_min=21, tm_sec=3, tm_wday=4, tm_yday=283, tm_isdst=0)
>>> asctime(localtime())
'Fri Oct 10 11:21:55 2025'
>>> ctime(c1)
'Fri Oct 10 11:19:14 2025'
>>> sleep(3)
>>> mktime(localtime())
1760084701.0
```
### 7. Графические функции.
```
>>> import pylab
>>> x=list(range(-3,55,4))
>>> t=list(range(15))
>>> pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x000001E04A97D948>]
>>> pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
>>> pylab.xlabel('время')
Text(0.5, 0, 'время')
>>> pylab.ylabel('сигнал')
Text(0, 0.5, 'сигнал')
>>> pylab.show()
```
![alt text](image.png)
```
>>> X1=[12,6,8,10,7]
>>> X2=[5,7,9,11,13]
>>> pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x000001E04B72CDC8>]
>>> pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x000001E04B8746C8>]
>>> pylab.show()
```
![alt text](Ris1.png)
```
>>> region=['Центр','Урал','Сибирь','Юг']
>>> naselen=[65,12,23,17]
>>> pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x000001E04C00AA48>, <matplotlib.patches.Wedge object at 0x000001E04C0021C8>, <matplotlib.patches.Wedge object at 0x000001E04A6BCCC8>, <matplotlib.patches.Wedge object at 0x000001E04C139A08>], [Text(-0.1910130855889933, 1.083288512416601, 'Центр'), Text(-0.8613283319035216, -0.6841882085072037, 'Урал'), Text(0.04429273729355889, -1.0991078898011077, 'Сибирь'), Text(0.9873752043868569, -0.4848610169543564, 'Юг')])
>>> pylab.show()
```
![alt text](Ris2.png)
```
>>> pylab.hist(X1, bins = 5)
(array([2., 1., 0., 1., 1.]), array([ 6. , 7.2, 8.4, 9.6, 10.8, 12. ]), <BarContainer object of 5 artists>)
>>> pylab.show()
```
![alt text](image-1.png)
```
>>> values = [13,14,10,18]
>>> categories = ['A', 'B', 'C', 'D']
>>> pylab.bar(categories, values)
<BarContainer object of 4 artists>
>>> pylab.show()
```
![alt text](image-2.png)
### 8. Самостоятельно изучите состав статистического модуля statistics. Попробуйте применить не менее 3-х функций из этого модуля.
```
>>> import statistics
>>> statistics
<module 'statistics' from 'C:\\Users\\gmack\\AppData\\Local\\Programs\\Python\\Python37\\lib\\statistics.py'>
>>> dir(statistics)
['Decimal', 'Fraction', 'StatisticsError', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_counts', '_exact_ratio', '_fail_neg', '_find_lteq', '_find_rteq', '_isfinite', '_ss', '_sum', 'bisect_left', 'bisect_right', 'collections', 'groupby', 'harmonic_mean', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'numbers', 'pstdev', 'pvariance', 'stdev', 'variance']
>>> lst = [1,4,3,5,6,7,83,5,63,5,78,12,5,7,1,4,19]
>>> mean(lst)
18.11764705882353
>>> median(lst)
5
>>> mode(lst)
5
```

@ -0,0 +1,49 @@
# Общее контрольное задание по теме 4
Махнов Георгий, А-01-23
## Задание
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стан-дартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```
>>> from math import *
>>> from cmath import *
>>> from time import *
>>> from random import *
>>> import string
>>> divmod(round(phase(0.2+0.8j), 2)*20, 3)
(8.0, 2.6000000000000014)
>>> struct_time = localtime()
>>> struct_time
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=24, tm_hour=10, tm_min=10, tm_sec=18, tm_wday=4, tm_yday=297, tm_isdst=0)
>>> struct_time = localtime()
>>> print(f"Текущее время: {struct_time.tm_hour}:{struct_time.tm_min}")
Текущее время: 10:10
>>> lst = ["понедельник", "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье"]
>>> sample(lst)
>>> sample(lst, 3)
['вторник', 'четверг', 'понедельник']
>>> lst = list(range(14,32,3))
>>> choice(lst)
14
>>> choice(lst)
20
>>> N = round(gauss(15, 4))
>>> N
13
>>> abc_list = sample(list(string.ascii_letters), N)
>>> abc_list
['b', 'y', 's', 'a', 'm', 'U', 'A', 'u', 'X', 'o', 'k', 'Q', 't']
>>> (time() - mktime(struct_time))//60
3.0
```

@ -0,0 +1,24 @@
# Индивидуальное контрольное задание по теме 4
Махнов Георгий, А-01-23
## Задание 9
9. Напишите инструкцию, позволяющую определить и записать в переменную календарные характеристики (год, месяц, день) момента, отстоящего на 7000000 сек. вперед от текущего времени. Выведите эти сведения в виде строки вида: «Это будет ХХ-ХХ-ХХХХ». Создайте множество с 5 случайными целыми элементами, значения которых находятся в диапазоне значений от 1 до 12.
## Решение
```
>>> from time import *
>>> future_date = [localtime(time()+7000000).tm_year, localtime(time()+7000000).tm_mon, localtime(time()+7000000).tm_mday]
>>> future_date
[2026, 1, 13]
>>> print(f"Это будет {future_date[2]}-{future_date[1]}-{future_date[0]}")
Это будет 13-1-2026
>>> rand_set = set()
>>> while len(rand_set) != 5:
... rand_set.add(randint(1,12))
...
>>> rand_set
{1, 3, 4, 11, 12}
```

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

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

После

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

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

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

После

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

@ -0,0 +1,213 @@
# Отчет по теме 5
Махнов Георгий, А-01-23
## Тема 5. Блоки инструкций, управляющие инструкции
## 5 Блоки инструкций, управляющие инструкции
### 2 Изучим ветвление по условию – управляющую инструкцию if
```py
>>> porog = 13
>>> rashod1 = 8
>>> rashod2 = 9
>>> dohod = 5
>>> if rashod1 >= porog:
... dohod = 12
... elif rashod2 == porog:
... dohod = 0
... else:
... dohod =- 8
...
>>> dohod
-8
>>> if rashod1 >= porog:
... dohod = 12
... elif rashod2 == porog:
... dohod = 0
... else:
... dohod =- 8
...
>>> dohod
-8
>>> if porog == 3:
... dohod = 1
... elif porog == 4:
... dohod = 2
... elif porog == 5:
... dohod = 3
... else:
... dohod = 0
...
>>> dohod
0
>>> dohod=2 if porog>=4 else 0
>>> dohod
2
>>> if porog>=5 : rashod1=6; rashod2=0
...
>>> rashod1, rashod2
(6, 0)
```
### 3 Изучим цикл по перечислению – управляющую инструкцию for
#### 3.1 Простой цикл.
```py
>>> temperatura = 5
>>> for i in range(3, 18, 3):
... temperatura += i
...
>>> temperatura
50
```
#### 3.2 Более сложный цикл
```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]
>>> 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]
```
В первом случае мы идем по каждому элементу внутри списка sps. По условию, если длина списка не больше 10, то в него добавляется первый элемент списка - 2. Но так как мы все еще идем по элементам внутри списка, то по достижению последнего изначального элемента - 8, мы пойдем дальше по добавленным в список элементам (т.е по двойкам), пока не будет удовлетворено условие `if`, из-за чего длина этого списка равна 11.
Во втором случае при помощи среза [:] мы идем по первоначальным элементам списка, но не внутри самого списка, и при добавлении двоек в изначальный список цикл не будет продолжать работать после обработки последнего элемента первоначального списка, из-за чего длина списка равна 8.
#### 3.3 Создание списка с 10 целыми случайными числами из диапазона от 1 до 100. При этом, если сум-ма чисел не превышает 500, эта сумма должна быть отображена на экране
```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)
...
>>> print(ss)
501
```
Программа не всегда выводит значения на экран. Это происходит из-за оператора `break`, который завершает цикл, если сумма ss первысила 500. В этом случае `else` не выполняется.
#### 3.4 Пример с символьной строкой
```py
>>> stroka='Это – автоматизированная система'
>>> stroka1=""
>>> for ss in stroka:
... stroka1+=" "+ss
...
>>> stroka
'Это – автоматизированная система'
>>> stroka1
' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а'
```
#### 3.5 Запись цикла в строке.
```py
>>> import math
>>> sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
>>>import pylab
>>> pylab.plot(sps2)
[<matplotlib.lines.Line2D object at 0x000001D6AA8730C8>]
>>> pylab.show()
```
Полученный график: ![alt text](image.png)
### 4 Изучим цикл «пока истинно условие» – управляющую инструкцию while
#### 4.1 Цикл со счетчиком.
```py
>>> rashod = 300
>>> while rashod:
... print("Расход=",rashod)
... rashod-=50
...
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
```
Завершение цикла произошло в тот момент, когда переменная rashod стала равна нулю, завершив цикл, так как ноль как логическая переменная значит False.
#### 4.2 Пример с символьной строкой
```py
>>> 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()
...
Значение в момент 0 = 0.0
Значение в момент 1 = 0.049958374957880025
Значение в момент 2 = 0.09966799462495568
Значение в момент 3 = 0.14888503362331795
Значение в момент 4 = 0.197375320224904
Значение в момент 5 = 0.2449186624037092
Значение в момент 6 = 0.2913126124515909
Значение в момент 7 = 0.3363755443363322
Значение в момент 8 = 0.3799489622552249
Значение в момент 9 = 0.421899005250008
Значение в момент 10 = 0.4621171572600098
Значение в момент 11 = 0.5005202111902354
Значение в момент 12 = 0.5370495669980353
Значение в момент 13 = 0.5716699660851172
Значение в момент 14 = 0.6043677771171636
Значение в момент 15 = 0.6351489523872873
Значение в момент 16 = 0.6640367702678489
Значение в момент 17 = 0.6910694698329307
Значение в момент 18 = 0.7162978701990245
Значение в момент 19 = 0.7397830512740043
Значение в момент 20 = 0.7615941559557649
Значение в момент 21 = 0.7818063576087741
Значение в момент 22 = 0.8004990217606297
Значение в момент 23 = 0.8177540779702878
Значение в момент 24 = 0.8336546070121553
Значение в момент 25 = 0.8482836399575129
Значение в момент 26 = 0.8617231593133063
Значение в момент 27 = 0.874053287886007
Значение в момент 28 = 0.8853516482022625
Значение в момент 29 = 0.8956928738431645
Значение в момент 30 = 0.9051482536448664
Значение в момент 31 = 0.9137854901178277
Значение в момент 32 = 0.9216685544064713
Значение в момент 33 = 0.9288576214547277
Значение в момент 34 = 0.935409070603099
Значение в момент 35 = 0.9413755384972874
Значение в момент 36 = 0.9468060128462683
Значение в момент 37 = 0.9517459571646616
Значение в момент 38 = 0.9562374581277391
```
Полученный график: ![alt text](image-1.png)
#### 4.3 Определение, является ли число простым (делится только на самого себя или 1).
```py
>>> chislo=267
>>> kandidat =chislo // 2
>>> while kandidat > 1:
... if chislo%kandidat == 0:
... print(chislo, ' имеет множитель ', kandidat)
... break
... kandidat -= 1
... else:
... print(chislo, ' является простым!')
...
267 имеет множитель 89
```

@ -0,0 +1,60 @@
# Общее контрольное задание по теме 5
Махнов Георгий, А-01-23
## Задание
• Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите.
• Создайте список со словами из задания данного пункта. Для этого списка определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).
• Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его сред-ние баллы по двум сессиям.
## Решение
```py
alphabet_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
eng_str = "The quick, brown fox jumps over the lazy dog."
index_str = ""
for letter in eng_str:
try:
index_str = index_str + f"{letter} - {str(alphabet_list.index(letter.lower()) + 1)} "
except ValueError:
index_str = index_str + letter
print(index_str)
>>> T - 20 h - 8 e - 5 q - 17 u - 21 i - 9 c - 3 k - 11 , b - 2 r - 18 o - 15 w - 23 n - 14 f - 6 o - 15 x - 24 j - 10 u - 21 m - 13 p - 16 s - 19 o - 15 v - 22 e - 5 r - 18 t - 20 h - 8 e - 5 l - 12 a - 1 z - 26 y - 25 d - 4 o - 15 g - 7 .
sentence_str = "Создайте список со словами из задания данного пункта. Для этого списка определите есть ли в нем некоторое заданное значение и выведите соответствующее сообщение либо о нахождении элемента либо о его отсутствии в списке проверить как с имеющимся так и с отсутствующим словом".split()
if input("Введите слово: ") in sentence_str:
print("Слово есть в предложении")
else:
print("Слова нет в предложении")
>>> Введите слово: либо
Слово есть в предложении
>>> Введите слово: лихо
Слова нет в предложении
surnames_summer = ['Коваленко', 'Лыкова', 'Лазарев']
marks_summer = [4.75, 3.75, 5.00]
surnames_winter = ['Лыкова', 'Коваленко', 'Лазарев']
marks_winter = [3.25, 4.5, 5.00]
surname = input("Введите фамилию студента: ")
if surname in surnames_summer:
print(f"Студент {surname}. Средний балл за летнюю сессию составляет {marks_summer[surnames_summer.index(surname)]},
за зимнюю сессию составляет {marks_winter[surnames_winter.index(surname)]}.") #перенос сделан для удобства проверки, в файле .py строка кода не переносится
else:
print(f"Студент {surname}. отсутствует в списке")
>>>Введите фамилию студента: Лазарев
Студент Лазарев. Средний балл за летнюю сессию составляет 5.0, за зимнюю сессию составляет 5.0.
>>>Введите фамилию студента: Махнов
Студент Махнов. отсутствует в списке
```

@ -0,0 +1,29 @@
alphabet_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
eng_str = "The quick, brown fox jumps over the lazy dog."
index_str = ""
for letter in eng_str:
try:
index_str = index_str + f"{letter} - {str(alphabet_list.index(letter.lower()) + 1)} "
except ValueError:
index_str = index_str + letter
print(index_str)
if input("Введите слово: ") in sentence_str:
print("Слово есть в предложении")
else:
print("Слова нет в предложении")
surnames_summer = ['Коваленко', 'Лыкова', 'Лазарев']
marks_summer = [4.75, 3.75, 5.00]
surnames_winter = ['Лыкова', 'Коваленко', 'Лазарев']
marks_winter = [3.25, 4.5, 5.00]
surname = input("Введите фамилию студента: ")
if surname in surnames_summer:
print(f"Студент(ка) {surname}. Средний балл за летнюю сессию составляет {marks_summer[surnames_summer.index(surname)]}, за зимнюю сессию составляет {marks_winter[surnames_winter.index(surname)]}.")
else:
print(f"Студент(ка) {surname}. отсутствует в списке")

@ -0,0 +1,23 @@
# Индивидуальное контрольное задание по теме 5
Махнов Георгий, А-01-23
## Задание 9
9. Напишите инструкции создания списка с 20 случайными нормально распределенными (математическое ожидание равно -50, дисперсия равна 64) числами. Из этого списка перепишите в другой список только те элементы, которые не превышают среднего значения.
## Решение
```py
import random as rn
sps = [rn.gauss(-50, 64**0.5) for i in range(20)]
print(f"{sps}, среднее = {sum(sps)/len(sps)} \n")
new_sps = [sps[i] for i in range(len(sps)) if sps[i]<=sum(sps)/len(sps)]
print(new_sps)
>>> [-48.42767862148211, -43.69035462933621, -61.0702207089155, -53.983411522362914, -46.71703779699627, -43.0128636534661, -36.739016417150715, -57.8461158532874, -40.051722914719875, -54.69110069704356, -53.21044543510062, -56.15437523954474, -63.130702927718104, -54.448990465321415, -54.90985201111035, -61.41046778390321, -83.6761467075842, -39.79673632158901, -46.536576715447765, -40.71362490760454], среднее = -52.010872066484225
[-61.0702207089155, -53.983411522362914, -57.8461158532874, -54.69110069704356, -53.21044543510062, -56.15437523954474, -63.130702927718104, -54.448990465321415, -54.90985201111035, -61.41046778390321, -83.6761467075842]
```

@ -0,0 +1,15 @@
'''
Напишите инструкции создания списка с 20 случайными нормально распределенными
(математическое ожидание равно -50, дисперсия равна 64) числами.
Из этого списка перепишите в другой список только те элементы, которые не превышают среднего значения.
'''
import random as rn
sps = [rn.gauss(-50, 64**0.5) for i in range(20)]
print(f"{sps}, среднее = {sum(sps)/len(sps)} \n")
new_sps = [sps[i] for i in range(len(sps)) if sps[i]<=sum(sps)/len(sps)]
print(new_sps)
Загрузка…
Отмена
Сохранить