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

...

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

Автор SHA1 Сообщение Дата
byvs a92dfa98f2 test is done
18 часов назад
byvs 8170a21083 task fixed
19 часов назад
byvs 026307929c task is done
19 часов назад
byvs a954c54cc2 report is done
19 часов назад
byvs 18d642892e add task.md
3 недель назад
byvs 0cb8960980 fix report.md
3 недель назад
byvs ac529b4a1a report is done
3 недель назад
byvs b354fe4888 add test.md
4 недель назад
byvs ab498611cf task topic3 is done
1 месяц назад
byvs eb6783bfbc report in TOPIC3 is done
1 месяц назад
byvs 77b1db5819 Merge branch 'main' of http://uit.mpei.ru/git/StepanishchevVR/python-labs
2 месяцев назад
byvs 0044ff1e80 topic 2 is done
2 месяцев назад
StepanishchevVR aba93a781b Загрузил файлы test.md
2 месяцев назад
byvs 13ba6d043f add test.md
2 месяцев назад
StepanishchevVR 5e4f8c6e82 Изменил(а) на 'TEMA1/report.md'
2 месяцев назад
byvs 2b2ffe1470 first commit
2 месяцев назад

@ -0,0 +1,5 @@
#Программа по Теме 1 Степанищев Виктор Романович
print('Hello')
h=input('Your name=')
import os
os.chdir(r"/home/byvs/MPEI/Programming Python/Stepanishchev/TEMA1/")

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

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

После

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

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

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

После

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

@ -0,0 +1,96 @@
# Отчёт по теме 1
Степанищев Виктор, А-03-23
## 1 Знакомство с интерпретатором
Введение инструкций в окно интерпретатора
```py
>>>print('Hello')
Hello
>>>h=input('Your name=')
Your name=Viktor
>>>exit()
```
## 2 Знакомство с интерактивной оболочкой IDLE
Настройка текущего каталога
```py
import os
os.chdir(r"/home/byvs/MPEI/Programming Python/python-labs/TEMA1/")
```
Создание Pr0.py в рабочем каталоге и его запуск тремя способами: import Pr0, F5, 'Запустить модуль'
```py
#Программа по Теме 1 Степанищев Виктор Романович
print('Hello')
h=input('Your name=')
import os
os.chdir(r"/home/byvs/MPEI/Programming Python/Stepanishchev/TEMA1/")
```
Запуск prb1.py
```py
>>> import prb1
Как Вас зовут? Viktor
Привет, Viktor
```
В папке _pycache_ хранится двоичный скомпилированный код, который нужен для оптимизации загрузки и запуска программы
Раздел помощи help в главном меню IDLE предлагает следующие виды помощи: документацию по IDLE, доку по Python
и наглядную демонстрацию работы модуля Turtle
```py
>>>help(print)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
>>>help(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.
(None, None)
```
Результат работы программы tdemo_chaos.py :
<image src="figure0.png">
Демонстрация работы модуля Turtle на примере clock из Turtle Demo в выпадающем меню help:
<image src="figure1.png">

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

@ -0,0 +1,492 @@
# Отчёт по теме 2
Выполнил Степанищев Виктор, А-03-23
# 1. Начало работы
Запуск IDLE, установление рабочего каталога
# 2. Изучение простых объектов
```py
>>f1=16; f2=3
>>f1,f2
(16, 3)
>>f1;f2
16
3
>>dir()
['__annotations__', '__builtins__', '__doc__', '__file__', '__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_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
>>type(f2)
<class 'int'>
>>del f1,f2
>>dir(f1)
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
dir(f1)
NameError: name 'f1' is not defined
#Объектов не осталось после del
```
# 3. Изучение правил именования объектов
```py
>>gg1=1.6
>>hh1='Строка'
>>73sr=3
SyntaxError: invalid decimal literal
>>and=7
SyntaxError: invalid syntax
```
# 4. Просмотр ключевых слов в Python
```py
>>import keyword
>>keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
>>list_keyword = keyword.kwlist
```
# 5. Просмотр встроенных идентификаторов
```py
>>import builtins
>>dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', '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', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
```
Изучение функций **abs**, **len**, **max**, **min**, **pow**, **round**, **sorted**, **sum**, **zip**
1) abs - возвращает абсолютное значение передаваемого числа
```py
>>help(abs)
Help on built-in function abs in module builtins:
abs(x, /)
Return the absolute value of the argument.
>>abs(-4.5)
4.5
```
2) len - возвращает длину (количество элементов) объекта
```py
>>help(len)
Help on built-in function len in module builtins:
len(obj, /)
Return the number of items in a container.
>>len([1, 2, 3])
3
```
3) max - возвращает наибольший элемент в итерируемом объекте или из нескольких аргументов
```py
>>help(max)
Help on built-in function max in module builtins:
max(...)
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value
With a single iterable argument, return its biggest item. The
default keyword-only argument specifies an object to return if
the provided iterable is empty.
With two or more arguments, return the largest argument.
>>max([1, 2, 3])
3
```
4) min - возвращает наименьший элемент в итерируемом объекте или из нескольких аргументов
```py
>>help(min)
Help on built-in function min in module builtins:
min(...)
min(iterable, *[, default=obj, key=func]) -> value
min(arg1, arg2, *args, *[, key=func]) -> value
With a single iterable argument, return its smallest item. The
default keyword-only argument specifies an object to return if
the provided iterable is empty.
With two or more arguments, return the smallest argument.
>>min([1, 2, 3])
1
```
5) pow - возвращает x в степени y, если указан z, возвращает результат по модулю z
```py
>>help(pow)
Help on built-in function pow in module builtins:
pow(base, exp, mod=None)
Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments
Some types, such as ints, are able to use a more efficient algorithm when
invoked using the three argument form.
>>pow(2, 3)
8
>>pow(2, 3, 3)
2
```
6) round - округляет число до указанного количества знаков после запятой
```py
>>help(round)
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
>>round(14.0214, 2)
14.02
```
7) sorted - возвращает новый отсортированный список из элементов итерируемого объекта
```py
>>help(sorted)
Help on built-in function sorted in module builtins:
sorted(iterable, /, *, key=None, reverse=False)
Return a new list containing all items from the iterable in ascending order.
A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.
>>sorted([3, 2, 1])
[1, 2, 3]
```
8) sum - возвращает сумму всех элементов итерируемого объекта
```py
>>help(sum)
Help on built-in function sum in module builtins:
sum(iterable, /, start=0)
Return the sum of a 'start' value (default: 0) plus an iterable of numbers
When the iterable is empty, return the start value.
This function is intended specifically for use with numeric values and may
reject non-numeric types.
>>sum([1, 2, 3])
6
```
9) zip - объединяет элементы из нескольких итерируемых объектов в кортежи
```py
>>help(zip)
Help on class zip in module builtins:
class zip(object)
| zip(*iterables, strict=False) --> Yield 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.
|
| If strict is true and one of the arguments is exhausted before the others,
| raise a ValueError.
|
| Methods defined here:
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __iter__(self, /)
| Implement iter(self).
|
| __next__(self, /)
| Implement next(self).
|
| __reduce__(...)
| Return state information for pickling.
|
| __setstate__(...)
| Set state information for unpickling.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
>>students = ['Viktor', 'Alexandr']
>>ages = [20, 20]
>>list(zip(students, ages))
[('Viktor', 20), ('Alexandr', 20)]
```
# 6. Малые и большие буквы различаются
```py
>>Gg1=45
>>gg1
1.6
>>Gg1
45
```
# 7. Изучение базовых типов объектов
## 7.1 Логический тип
```py
>>bb1=True; bb2=False
>>bb1;bb2
True
False
>>type(bb1)
<class 'bool'>
```
## 7.2 Другие простые типы
```py
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)
```
## 7.3 Строка символов
```py
ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
print(ss1a)
```
```py
ss1b= 'Меня зовут: \n Степанищев В.Р.'
print(ss1b)
```
```py
mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции."""
print(mnogo)
```
```py
>>ss1[17:3:-2]
'омсаот '
>>ss1[-4:3:-2]
'омсаот '
```
```py
>>ss1[4]='='
Traceback (most recent call last):
File "<pyshell#95>", line 1, in <module>
ss1[4]='='
TypeError: 'str' object does not support item assignment
>>ss1=ss1[:4]+'='+ss1[5:]
>>ss1
'Это = строка символов'
```
```py
>>ss1b
'Меня зовут:
Степанищев В.Р.'
>>ss1b[:3]
'Мен'
>>ss1b[::-1]
'.Р.В вещинапетС
:тувоз янеМ'
```
Самостоятельно придумал значения и создал объекты разных типов
```py
my_int = 42
my_float = 3.14159
my_complex = 2 + 3j
my_string = "Hello, Python!"
my_list = [1, 2, "три", 4.0]
my_tuple = (10, 20, "тридцать")
my_set = {1, 2, 3, 2, 1}
my_dict = {"имя": "Виктор", "возраст": 20, "город": "Москва"}
my_bool = True
my_bytes = b"hello"
my_range = range(5)
```
# 8. Типы объектов: списки, кортежи, словари, множества
```py
>>spis1=[111,'Spisok',5-9j]
>>stup=[0,0,1,1,1,1,1,1,1]
>>spis1[-1]
(5-9j)
```
```py
>>stup[-8::2]
[0, 1, 1, 1]
>>stup
[0, 0, 1, 1, 1, 1, 1, 1, 1]
```
*Сколько элементов вошло в этот новый список и какие индексы они имели в исходном списке?*
Ответ: количество эл-ов в новом списке 4, индексы в исходном списке 1, 3, 5, 7
```py
>>spis1[1]='Список'
>>spis1
[111, 'Список', (5-9j)]
len(spis1)
3
help(spis1.append)
Help on built-in function append:
append(object, /) method of builtins.list instance
Append object to the end of the list.
>>spis1.append('New item')
>>spis1
[111, 'Список', (5-9j), 'New item']
>>spis1.append(ss1b)
>>spis1
[111, 'Список', (5-9j), 'New item', 'Меня зовут: \n Степанищев В.Р.']
>>spis1.pop(1)
'Список'
>>spis1
[111, (5-9j), 'New item', 'Меня зовут: \n Степанищев В.Р.']
```
*Использование insert, remove, extend, clear, sort, reverse, copy, count, index*
```py
>>spis1.insert(1, 'string')
>>spis1
[111, 'string', (5-9j), 'New item', 'Меня зовут: \n Степанищев В.Р.']
>>spis1.remove(111)
>>spis1
['string', (5-9j), 'New item', 'Меня зовут: \n Степанищев В.Р.']
>>new_list = [1, 2, 3]
>>spis1.extend(new_list)
>>spis1
['string', (5-9j), 'New item', 'Меня зовут: \n Степанищев В.Р.', 1, 2, 3]
>>new_list.clear()
>>new_list
[]
>>new_list = [3, 1, 2]
>>new_list.sort()
>>new_list
[1, 2, 3]
>>new_list.reverse()
>>new_list
[3, 2, 1]
>>new_list2 = new_list.copy()
>>new_list2
[1, 2, 3]
>>new_list = [1, 2, 2, 2, 3, 3]
>>new_list.count(2)
3
>>new_list = ['one', 'two', 'three']
>>new_list.index('three')
2
```
```py
>>spis1
['string', (5-9j), 'New item', 'Меня зовут: \n Степанищев В.Р.', 1, 2, 3]
>>spis2=[spis1,[4,5,6,7]]
>>spis2[0][1]
(5-9j)
>>spis2[0][1]=78
>>spis2
[['string', 78, 'New item', 'Меня зовут: \n Степанищев В.Р.', 1, 2, 3], [4, 5, 6, 7]]
>>spis1
['string', 78, 'New item', 'Меня зовут: \n Степанищев В.Р.', 1, 2, 3]
```
*Почему spis1 отличается от изначально заданного?*
Ответ: spis1 претерпел изменения потому что spis2[0] не является копией spis1, а представляет
собой ссылку на тот же самый объект в памяти
Придумал и создал свой объект-список, элементами которого объекты разных типов:
число, строка, логическое значение, список.
```py
my_list = [12, 'str', True, [1, 2, 3]]
my_list
[12, 'str', True, [1, 2, 3]]
```
## 8.2 Кортежи
```py
>>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 Степанищев В.Р.')
>>kort1.index(2)
4
>>kort1.count(222)
1
>>kort1[2]=90
Traceback (most recent call last):
File "<pyshell#264>", line 1, in <module>
kort1[2]=90
TypeError: 'tuple' object does not support item assignment
>>my_kort = (12, 'str', [1, 2, 3], (222, 'str'))
>>my_kort
(12, 'str', [1, 2, 3], (222, 'str'))
```
## 8.3 Словари
```py
>>dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>dic1['Orel']
56
>>dic1['Pskov']=78
>>dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
>>sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
>>sorted(dic1.values())
[45, 56, 78, 145]
>>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)])
>>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*
```py
>>t = ("a", "b", "c", "d", "e", "f", "g")
>>l = [1, 2, 3, 4, 5]
>>d = dict(zip(t, l))
>>d
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
```
Элементов в получившимся словаре - 5, т.к. zip() работает до конца самого короткого объекта (в нашем случае этот объект l)
```py
>>AVTI={'Курс I':[22,23,17,24,30,29,28,25,23,0,4,31,30,33,18,12,27],'Курс II':[18,16,12,15,29,18,21,23,13,0,4,20,31,26,16,], 'Курс III':[17,12,0,6,17,15,19,19,0,0,5,17,22,18,12], 'Курс IV':[27,16,0,13,17,15,19,20,0,0,2,15,18,16,17]}
>>AVTI['Курс III'][5]
15
```
## 8.4 Множества
```py
>>mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
>>mnoz1
{'датчик', 'микропроцессор', 'двигатель', 'линия связи'}
>>len(mnoz1)
4
>>'датчик' in mnoz1
True
>>mnoz1.add('реле')
>>mnoz1.remove('линия связи')
```
```py
>>s = {1, "hello", True, 3.14, (2, 5)}
>>s.add("Python")
>>s
{1, 3.14, 'hello', (2, 5), 'Python'}
>>s.remove(3.14)
>>s
{1, 'hello', (2, 5), 'Python'}
```

@ -0,0 +1,24 @@
# Общее контрольное задание по теме 2
Степанищев Виктор, А-03-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкции
## Решение
```py
import keyword
familia = 'Stepanishchev'
first_word = familia[0]
sp_kw = keyword.kwlist
print('nonlocal' in sp_kw)
sp_kw.remove('nonlocal')
print('nonlocal' in sp_kw)
kort_nam = ('Viktor', 'Alexander', 'Ilya', 'Nikita')
print(type(kort_nam))
kort_nam += ('Emil', 'Zahar')
print(kort_nam)
print(kort_nam.count('Дима'))
dict_bas = {'Список':[1,2,4], 'Множество':{1,2,3,4},'Словарь':{'key':'value'}}
print(dict_bas)
```

@ -0,0 +1,716 @@
# Отчёт по теме 3
Выполнил Степанищев Виктор, А-03-23
## 1. Начало работы
Запуск IDLE, установление рабочего каталога
## 2. Преобразование простых базовых типов объектов
### 2.1 Преобразование в логический тип с помощью функции bool
```py
>>> logiz1=bool(56) # 56 не ноль, поэтому True (любое число не равное нулю - True)
>>> logiz2=bool(0) # 0 - ноль, поэтому False
>>> logiz3=bool("Beta") # строка не пустая (имеет длину не равную нулю) - True
>>> logiz4=bool("") # строка пустая, кол-во символов 0 - False
>>> logiz1
True
>>> logiz2
False
>>> logiz3
True
>>> logiz4
False
```
### 2.2 Преобразование в целое десятичное число / в вещественное число
```py
>>> tt1=int(198.6) # отбрасывается дробная часть (без округления)
>>> tt2=int("-76") # число в строке символов (-76), система счисления не указана как параметр - по дефолту десятичная
>>> tt3=int("B",16) # перевод в 16-ричную
>>> tt4=int("71",8) # перевод в 8-ричную
>>> tt1
198
>>> tt2
-76
>>> tt3
11
>>> tt4
57
```
Диагностическая ошибка
```py
>>> tt5=int("98.76")
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
tt5=int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'
```
Объяснение:
int() ожидает увидеть целочисленное значение в строке, решение проблемы - int(float("98.76"))
```py
>>> 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 Преобразование десятичных чисел в другие системы счисления
```py
>>> hh=123
>>> dv1=bin(hh) # двоичная сс
>>> vos1=oct(hh) # 8-ричная сс
>>> shs1=hex(hh) # 16-ричная сс
>>> dv1
'0b1111011'
>>> vos1
'0o173'
>>> shs1
'0x7b'
```
Обратное преобразование:
```py
>>> int(dv1, 2)
123
>>> int(vos1, 8)
123
>>> int(shs1, 16)
123
```
## 3. Преобразование более сложных базов типов объектов
### 3.1 Преобразование в строку
```py
>>> strk1=str(23.6)
>>> strk2=str(logiz3)
>>> strk3=str(["A","B","C"])
>>> strk4=str(("A","B","C"))
>>> strk5=str({"A":1,"B":2,"C":9})
```
Вывод
```py
>>> strk1
'23.6'
>>> strk2
'True'
>>> strk3
"['A', 'B', 'C']"
>>> strk4
"('A', 'B', 'C')"
>>> strk5
"{'A': 1, 'B': 2, 'C': 9}"
```
### 3.2 Преобразование эл-ов объекта в список с помощью list()
```py
>>> spis1=list("Строка символов")
>>> spis2=list((124,236,-15,908))
>>> spis3=list({"A":1,"B":2,"C":9})
```
Вывод
```py
>>> spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
>>> spis2
[124, 236, -15, 908]
>>> spis3
['A', 'B', 'C']
```
Задание:
Придумайте инструкцию, обеспечивающую создание из того же словаря списка с другими его частями.
Решение:
```py
>>> spis3=list({"A":1,"B":2,"C":9}.values())
>>> spis3
[1, 2, 9]
```
### 3.3 Преобразование элементов объектов в кортеж
```py
>>> kort7=tuple('Строка символов')
>>> kort8=tuple(spis2)
>>> kort9=tuple({"A":1,"B":2,"C":9})
```
Вывод
```py
>>> kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
>>> kort8
(124, 236, -15, 908)
>>> kort9
('A', 'B', 'C')
```
```py
>>> kort9=tuple({"A":1,"B":2,"C":9}.values()) # уже по значениям
```
Вывод
```py
>>> kort9
(1, 2, 9)
```
### 3.4 Удаление объектов
```py
>>> del strk5, kort8
```
Проверка на наличие переменных после удаления
```py
>>> strk5
Traceback (most recent call last):
File "<pyshell#150>", line 1, in <module>
strk5
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
>>> kort8
Traceback (most recent call last):
File "<pyshell#151>", line 1, in <module>
kort8
NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
```
Задание:
Создайте строку со своей фамилией и инициалами, преобразуйте её в список, затем список – в кортеж и, наконец, кортеж – в строку
Ответ:
```py
>>> fio = 'Stepanishchev V.R.'
>>> list_fio = list(fio)
>>> cort_fio = tuple(list_fio)
>>> str_fio = str(cort_fio)
```
Вывод:
```py
>>> list_fio
['S', 't', 'e', 'p', 'a', 'n', 'i', 's', 'h', 'c', 'h', 'e', 'v', ' ', 'V', '.', 'R', '.']
>>> cort_fio
('S', 't', 'e', 'p', 'a', 'n', 'i', 's', 'h', 'c', 'h', 'e', 'v', ' ', 'V', '.', 'R', '.')
>>> str_fio
"('S', 't', 'e', 'p', 'a', 'n', 'i', 's', 'h', 'c', 'h', 'e', 'v', ' ', 'V', '.', 'R', '.')"
```
## 4. Арифметические операции
### 4.1 Сложение и вычитание
```py
>>> 12+7+90
109
>>> 5.689e-1 - 0.456
0.11289999999999994
>>> 23.6+54
77.6
>>> 14-56.7+89
46.3
```
### 4.2 Умножение
```py
>>> -6.7*12
-80.4
```
### 4.3 Деление
Результатом деления всегда будет вещественное число
```py
>>> -234.5/6
-39.083333333333336
>>> a=178/45
>>> a
3.9555555555555557
>>> type(a)
<class 'float'>
```
### 4.4 Деление с округлением вниз (целочисленное деление)
```py
>>> b=178//45
>>> c=-24.6//12.1
```
Вывод результата и типа каждого объекта
```py
>>> type(b)
<class 'int'>
>>> b
3
>>> type(c)
<class 'float'>
>>> c
-3.0
```
Если в целочисленном делении используется хотя бы один объект вещественного типа - результат будет вещественным,
если оба целых объекта - результат целый
Самостоятельно попробовал смешанные комбинации типов чисел в этой операции:
```py
>>> lol = 145.2 // 2
```
Вывод:
```py
>>> type(lol)
<class 'float'>
>>> lol
72.0
```
### 4.5 Получение остатка от деления
```py
>>> 148%33
16
>>> 12.6%3.8
1.2000000000000002
```
Самостоятельно попробовал смешанные комбинации типов чисел в этой операции:
```py
>>> 158.6 % 6
2.5999999999999943
```
Если в остатке от деления используется хотя бы один объект вещественного типа - результат будет вещественным,
если оба целых объекта - результат целый
## 4.6 Возведение в степень
```py
>>> 14**3
2744
>>> e=2.7**3.6
>>> e
35.719843790663525
```
Самостоятельно попробовал смешанные комбинации типов чисел в этой операции:
```py
>>> 5**3.2
172.4662076826519
```
Вопрос:
Какие из приведенных выше операций можно применять к комплексным числам, а какие – нет?
Ответ:
К комплексным числам можно применять следующие операции:
1) сложение
2) вычитание
3) умножение
4) деление
5) возведение в степень
и нельзя следующие:
1) целочисленное деление
```py
>>> z1 = 3 + 4j
>>> z2 = 1 + 2j
>>> z1 // z2
Traceback (most recent call last):
File "<pyshell#255>", line 1, in <module>
z1 // z2
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
```
(целочисленное деление требует целой части, не мнимой)
2) остаток от деления
```py
>>> z1 = 3 + 4j
>>> z2 = 1 + 2j
>>> z1 % z2
Traceback (most recent call last):
File "<pyshell#257>", line 1, in <module>
z1 % z2
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
```
(остаток от деления по сути основан на целочисленном делении, также работа с мнимой частью не предусмотрена)
## 5. Операции с двоичными представлениями целых чисел
### 5.1 Двоичная инверсия ~
```py
>>> dv1=9
>>> dv2=~dv1
>>> dv2
-10
```
Почему результат отрицательный - используется дополнительный код (two's complement) для представления отрицательных чисел. Формула результата:
**~x = -x - 1**
### 5.2 Двоичное "И"
```py
>>> 7&9
1
>>> 7&8
0
```
### 5.3 Двоичное "Или"
```py
>>> 7|9
15
>>> 7|8
15
>>> 14|5
15
```
### 5.4 Двоичное исключающее "Или"
```py
>>> 14^5
11
```
### 5.5 Двоичное исключающее "Или" (Влево или вправо)
```py
>>> h=14 #Двоичное представление = 1110
>>> g=h<<2 # Новое двоичное представление = 111000
>>> g1=h>>1 # Новое двоичное представление = 0111
>>> g2=h>>2 # Новое двоичное представление = 0011
```
Задание:
Придумайте два двоичных числа, не менее чем с 7 знаками, и попробуйте выполнить с ними разные операции.
Ответ:
```py
>>> a = 181
>>> b = 108
>>> a & b
36
>>> a | b
253
>>> a ^ b
217
```
По условию минимум 7 знаков:
```py
>>> bin(a)[2:]
'10110101'
>>> bin(b)[2:]
'1101100'
```
## 6. Операции при работе с последовательностями
### 6.1 Объединение последовательностей (конкатенация)
```py
>>> 'Система '+'регулирования'
'Система регулирования'
>>> ['abc','de','fg']+['hi','jkl']
['abc', 'de', 'fg', 'hi', 'jkl']
>>> ('abc','de','fg')+('hi','jkl')
('abc', 'de', 'fg', 'hi', 'jkl')
```
### 6.2 Повторение
```py
>>> 'ля-'*5
'ля-ля-ля-ля-ля-'
>>> ['ку','-']*3
['ку', '-', 'ку', '-', 'ку', '-']
>>> ('кис','-')*4
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
>>> signal1=[0]*3+[1]*99
>>> signal1
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> signal2=(0,)*3+(1,)*5+(0,)*7
>>> signal2
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
```
### 6.3 Проверка наличия заданного элемента в последовательности
```py
>>> stroka='Система автоматического управления'
>>> 'автомат' in stroka
True
>>> 'ку' in ['ку','-']*3
True
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
False
```
### 6.4 Подстановка значений в строку с помощью оператора «%»
```py
>>> stroka='Температура = %g %s %g'
>>> stroka % (16,' меньше ',25)
'Температура = 16 меньше 25'
```
%g - placeholder для чисел
%s - placeholder для строк
```py
>>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
## 7. Оператор присваивания
### 7.1 Обычное присваивание значения переменной
```py
>>> zz=-12
>>> zz
-12
```
### 7.2 Увеличение/уменьшение значения переменной на заданную величину
```py
>>> zz=-12
>>> zz
-12
>>> zz+=5
>>> zz-=3
>>> stroka='Система'
>>> stroka+=' регулирования'
>>> zz
-10
>>> stroka
'Система регулирования'
```
### 7.3 Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
```py
>>> zz/=2
>>> zz*=5
```
Попробовал самостоятельно
```py
>>> aaa = 5
>>> aaa *= 3
>>> aaa
15
>>> aaa /= 5
>>> aaa
3.0
```
### 7.4 Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=)
```py
>>> aaa = 5
>>> aaa //= 2
>>> aaa
2
>>> aaa = 5
>>> aaa %= 2
>>> aaa
1
>>> aaa=5
>>> aaa **= 3
>>> aaa
125
```
### 7.5. Множественное присваивание
```py
>>> w=v=10
>>> n1,n2,n3=(11,-3,'all')
>>> n1,n2,n3
(11, -3, 'all')
>>> w,v
(10, 10)
```
Задание:
Самостоятельно проверьте, можно ли вместо кортежа справа использовать строку, список, словарь, множество?
Ответ:
Со списком работает поэлементно, со строками посимвольно, с множествами работает, но не в той очередности присваивания, со словарем работает, но нужно знать что присваивать - ключи либо значения
## 8. Логические операции
### 8.1. Операции сравнения
```py
>>> w == v
True
>>> w != v
False
>>> w < v
False
>>> w > v
False
>>> w <= v
True
>>> w >= v
True
```
### 8.2 Проверка наличия заданного элемента в последовательности или во множестве
```py
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
>>> 'book' in mnoz1
True
>>> 'cap' in mnoz1
False
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> 'Vologda' in dic1
True
>>> 'Pskov' in dic1
False
>>> 56 in dic1.values()
True
>>> dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
>>> 'UII' in dct1['Depart']
True
>>> dct1['Depart'][1] == 'MM'
False
```
### 8.3 Создание больших логических выражений с использованием соединительных слов
```py
>>> a=17
>>> b=-6
>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
```
Задание:
Придумайте самостоятельно еще 2-3 примера сложных логических выражений.
Ответ:
```py
>>> (a == b) and ('Vologda' in dic1) or ('Pskov' in dic1)
False
>>> (a > b) or 'book' in mnoz1
True
>>> 'cap' in mnoz1 or a >= b
True
```
### 8.4. Проверка ссылок переменных на один и тот же объект
```py
>>> w=v=10
>>> w is v
True
>>> w1=['A','B']
>>> v1=['A','B']
>>> w1 is v1
False
```
Задание:
Объясните результат
Ответ:
В начале присваивания двум переменным w и v значения 10 мы храним обе переменные в одной ячейке памяти,
затем мы по отдельности присвоили двум этим переменным списки, они хоть и одинаковые, но всё равно
переменные по отдельности претерпели изменения -> хранятся в разных ячейках памяти
## 9. Операции с объектами, выполняемые с помощью методов
```py
>>> stroka='Микропроцессорная система управления'
>>> dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
```
### 9.1 Методы для работы со строками
```py
>>> stroka.find('пр')
5
>>> stroka.find('пр')
5
>>> stroka
'Микропроцессорная система управления'
>>> stroka.count("с")
4
>>> stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>> spis22=stroka.split(' ')
>>> spis22
['Микропроцессорная', 'система', 'управления']
>>> stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
>>> stroka3=" ".join(spis22)
>>> stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
>>> stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
>>> dont_shout_please = stroka.lower()
```
```py
>>> strk1='Момент времени {}, значение = {}'
>>> strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
>>> strk2='Момент времени {1}, значение = {0}:{2}'
>>> strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
# порядки расставлены так, как указаны индексы в строке strk2 - на позицию 0 ставится самый первый эл-нт передаваемый в format() и т.д.
```
```py
>>> strk3='Момент времени {num}, значение = {znch}'
>>> strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
```
### 9.2. Методы для работы со списками.
```py
>>> spsk = [1, 'A-03-23', 5.0, (1, 2, 3), True]
>>> dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> spsk.pop(2)
5.0
>>> spsk
[1, 'A-03-23', (1, 2, 3), True]
>>> spsk.append('c')
>>> spsk
[1, 'A-03-23', (1, 2, 3), True, 'c']
>>> spsk.insert(2,'a')
>>> spsk
[1, 'A-03-23', 'a', (1, 2, 3), True, 'c']
>>> spsk.count('a')
1
>>> spsk
[1, 'A-03-23', 'a', (1, 2, 3), True, 'c']
```
Задание:
Проанализируйте смысл операций, выполненных с помощью этих методов
Ответ:
1) методом pop() удалили 2-ой эл-т списка (2-ой начиная с нуля)
2) добавили 'c' в конец списка (метод append() всегда добавляет элемент в конец списка)
3) методом insert() на позицию 2 (также начиная с нуля) вставили строку 'a'
4) методом count() посчитали количество вхождений элемента 'a' в список
### 9.3. Самостоятельно создайте кортеж и изучите применение его методов.
```py
>>> my_tuple = ('str', 20, (1, 2, 3), True)
>>> my_tuple.count(20)
1
>>> my_tuple.index(True) # позиция True в кортеже
3
```
### 9.4.Также самостоятельно изучите методы словарей и множеств.
**Словари**
```py
>>> student = {
"name": "Viktor",
"age": 20,
"city": "Moscow",
"courses": ["Math", "Physics"],
"gpa": 2.85
}
>>> student.get("name")
'Viktor'
>>> student.keys()
dict_keys(['name', 'age', 'city', 'courses', 'gpa'])
>>> student.values()
dict_values(['Viktor', 20, 'Moscow', ['Math', 'Physics'], 2.85])
>>> student.update({"gpa": 4.5, "lazy": True})
>>> student
{'name': 'Viktor', 'age': 20, 'city': 'Moscow', 'courses': ['Math', 'Physics'], 'gpa': 4.5, 'Lazy': True}
>>> student.pop("Lazy")
True
>>> student
{'name': 'Viktor', 'age': 20, 'city': 'Moscow', 'courses': ['Math', 'Physics'], 'gpa': 4.5}
>>> student.clear()
>>> student
{}
```
**Множества**
```py
>>> A = {1, 2, 3, 4, 5}
>>> A.add(6)
>>> A
{1, 2, 3, 4, 5, 6}
>>> A.remove(6)
>>> A
{1, 2, 3, 4, 5}
>>> A.pop()
1
>>> A
{2, 3, 4, 5}
>>> A.clear()
>>> A
set()
```

@ -0,0 +1,106 @@
# Общее контрольное задание по теме 3
Степанищев Виктор, А-03-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
• Преобразовать восьмеричное значение 45 в целое число.
• Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?
• Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.
• Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
• Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.
• Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов.
• Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
## Решение
**1.**
```py
task1 = int('45', 8)
print(task1)
```
Вывод
```py
37
```
**2.**
```py
D = {"усиление":23, "запаздывание":12, "постоянная времени":78}
D_keys, D_values = list(D.keys()), list(D.values())
D_cort = tuple(D_keys + D_values)
print(D_cort)
```
Вывод
```py
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
```
*Вопрос:*
Чем отличается кортеж от списка?
*Ответ:*
Список изменяемый, кортеж неизменяемый
**3.**
```py
task3 = ((1768 // 24.8) % 3)**2.4
print(task3)
```
Вывод
```py
5.278031643091577
```
**4.**
```py
task4 = (~(13 & 27)^14) << 2
print(task4)
```
Вывод
```py
-32
```
**5.**
```py
task5 = ['колебат', 'колебат', 'колебат', 'колебат']
check = 'аткол' in (task5[2] + task5[3])
print(check)
```
Вывод
```py
True
```
**6.**
```py
task6 = dir(D)
D_values, D_keys = D.values(), D.keys()
print(D_values)
print(D_keys)
```
Вывод
```py
dict_values([23, 12, 78])
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
```
**7.**
```py
task7 = "Создать объект - символьную строку с текстом данного предложения"
only_words = task7.split(' ')
index_of_replace_symbol = only_words.index('-')
only_words[index_of_replace_symbol] = ','
only_words.remove('данного')
print(only_words)
```
Вывод
```py
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
```

@ -0,0 +1,84 @@
# Индивидуальное контрольное задание по ТЕМЕ №3
Степанищев Виктор, А-03-23
## Задание
```
M1_24
1) Какое назначение имеют демонстрационные примеры в системе помощи?
2) Создайте объект-кортеж с 5 элементами - произвольными восьмеричными числами. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
3) Напишите инструкцию, позволяющую определить, сколько элементов в кортеже. Напишите инструкцию, позволяющую выделить из кортежа второе по порядку число и записать его в виде отдельной переменной. Отобразите на экране получившийся объект.
4) Преобразуйте кортеж в список. Вставьте в список на третью позицию число 888. Отобразите получившийся объект. Преобразуйте список в строку и уберите из неё разделители чисел. Отобразите строку.
5) Используя метод форматирования написать инструкцию вывода на экран заданного номером элемента кортежа по шаблону: "Элемент кортежа №4 = <значение элемента>".
```
## Решение
### 1.
Практическое понимание, т.к. примеры показывают как именно использовать функцию или класс в реальном коде
### 2.
```py
oct_tuple = (0o1, 0o2, 0o3, 0o4, 0o5)
print(type(oct_tuple))
print(dir(oct_tuple))
```
Вывод:
```py
<class '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']
```
### 3.
```py
cort = (1, 2, 3, 4, 5)
print(len(cort))
element = cort[1]
print(element)
```
Вывод:
```py
5
2
```
### 4.
```py
cort = (1, 2, 3, 4, 5)
list_cort = list(cort)
print(list_cort)
list_cort.insert(2, 888)
print(list_cort)
string_cort = str(list_cort)
string_cort = string_cort.replace(',', '')
print(string_cort)
```
Вывод:
```
[1, 2, 3, 4, 5]
[1, 2, 888, 3, 4, 5]
[1 2 888 3 4 5]
```
### 5.
```py
cort = (1, 2, 3, 4, 5)
num_of_element = int(input())
try:
print(f"Элемент кортежа №{num_of_element} = {cort[num_of_element-1]}")
except IndexError:
print("длина кортежа меньше введенного Вами индекса")
```
Вывод:
```py
5
Элемент кортежа №5 = 5
```
```py
6
длина кортежа меньше введенного Вами индекса
```

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

@ -0,0 +1,336 @@
# Отчёт по теме 4
Выполнил Степанищев Виктор, А-03-23
## 1. Начало работы
Создание текстового файла `report.md`
## 2. Стандартные функции
### 2.1. Функция round – округление числа с заданной точностью
```py
>>> help(round)
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
>>> round(123.456,1)
123.5
>>> (123.456, 0)
123.0
>>> type(round(123.456, 0))
<class 'float'>
>>> round(123.456)
123
>>> type(round(123.456))
<class 'int'>
```
### 2.2. Функция range
```py
>>> gg = range(76, 123, 9)
>>> gg
range(76, 123, 9)
>>> list(gg)
[76, 85, 94, 103, 112, 121]
>>> range(23)
range(0, 23)
>>> 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]
```
_Объект с какими значениями получится в этом случае? Каковы границы диапазона? Какой шаг?_
**Значения: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]**
**Границы: [0, 23)**
**Шаг: 1**
### 2.3. Функция zip
```py
>>> = ['Stepanishchev', 'Krishtul', 'Ogarkov', 'Markov']
>>> zip(gg, qq)
>>> ff = zip(gg, qq)
>>> tuple(ff)
((76, 'Stepanishchev'), (85, 'Krishtul'), (94, 'Ogarkov'), (103, 'Markov'))
>>> fff = tuple(ff)
>>> len(fff)
4
>>> len(gg), len(qq)
(6, 4)
>>> ff[0]
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'zip' object is not subscriptable
```
**Нельзя обращаться с указанием индекса, т.к. объект является итерируемым класса zip**
### 2.4. Функция eval
```py
>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
>>> коэффициент усиления=>? 5
>>> dan
-131.0
```
### 2.5. Функция exec
```py
>>> exec(input('введите инструкции:'))
>>> введите инструкции:>? perem=-123.456;gg=round(abs(perem)+98,3)
>>> gg
221.456
```
### 2.6. Функции abs, pow, max, min, sum, divmod, len, map
```py
>>> abs(-14)
14
>>> pow(2, 3)
8
>>> max(1, 2, 3)
3
>>> min(1, 2, 3)
1
>>> sum([1, 2, 3])
6
>>> divmod(5, 3)
(1, 2)
>>> len(range(0, 15+1))
16
>>> map_test = map(lambda x: round(x, 1), [12.1245, 14.125234, 534.222])
>>> list(map_test)
[12.1, 14.1, 534.2]
```
## 3. Функции из стандартного модуля math
```py
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', '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
```
### 3.1 sin
```py
>>> math.sin(90)
0.8939966636005579
```
### 3.2 acos
```py
>>> math.acos(0)
1.5707963267948966
```
### 3.3 degrees
```py
>>> math.degrees(math.pi)
180.0
```
### 3.4 radians
```py
>>> math.radians(180)
3.141592653589793
```
### 3.5 exp
```py
>>> math.exp(1)
2.718281828459045
```
### 3.6 log
```py
>>> math.log(10)
2.302585092994046
```
### 3.7 log10
```py
>>> math.log10(100)
2.0
```
### 3.8 sqrt
```py
>>> math.sqrt(16)
4.0
```
### 3.9 ceil
```py
>>> math.ceil(3.14) # округление вверх
4
```
### 3.10 floor
```py
>>> math.floor(3.14) # округление вниз
3
```
### 3.11 pi
```py
>>> math.pi
3.141592653589793
```
_Вычислите значение функции sin(2π/7+e0.23 )_
```py
>>> sin((2*pi/7) + exp(0.23))
0.8334902641414562
```
## 4. Функции из модуля cmath, c комплексными числами
```py
>>> import cmath
>>> dir(cmath)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
>>> cmath.sqrt(1.2 - 0.5j)
(1.118033988749895-0.22360679774997896j)
>>> cmath.phase(1 - 0.5j)
-0.4636476090008061
```
## 5. random
```py
>>> import random
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_fabs', '_floor', '_index', '_inst', '_isfinite', '_lgamma', '_log', '_log2', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'binomialvariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>> help(random.seed)
Help on method seed in module random:
seed(a=None, version=2) method of random.Random instance
Initialize internal state from a seed.
The only supported seed types are None, int, float,
str, bytes, and bytearray.
None or no argument seeds from current time or from an operating
system specific randomness source if available.
If *a* is an int, all bits are used.
For version 2 (the default), all of the bits are used if *a* is a str,
bytes, or bytearray. For version 1 (provided for reproducing random
sequences from older versions of Python), the algorithm for str and
bytes generates a narrower range of seeds.
>>> random.seed()
```
```py
>>> random.random() # вещественное число от 0.0 до 1.0
0.12874671061082976
>>> random.uniform(5, 15) # вещественное число от 5.0 до 15.0
13.134575401523493
>>> random.randint(1, 100) # целое число от 1 до 100
32
>>> random.gauss(0, 1) # mu - среднее значение, sigma - стандартное отклонение
-0.07800637063087972
>>> random.choice([1, 2, 3, 4]) # случайный выбор элемента из списка, кортежа, строки и т.д.
3
>>> My_Numbers = [1, 2, 3, 4]
>>> random.shuffle(My_Numbers)
>>> My_Numbers
[1, 2, 4, 3]
>>> random.sample(My_Numbers, 2) # случайный выбор двух элементов из My_Numbers
[4, 1]
>>> random.betavariate(2, 5)
0.16541871582286427
>>> random.gammavariate(2, 1)
0.6551814424330216
```
## 6. time - работа с календарем и временем
```py
>>> import time
>>> dir(time)
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']
>>> c1=time.time()
>>> c1
1759765317.220153
>>> c2=time.time()-c1
>>> c2
12.758715867996216
>>> dat=time.gmtime()
>>> dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=6, tm_hour=15, tm_min=43, tm_sec=11, tm_wday=0, tm_yday=279, tm_isdst=0)
>>> dat.tm_mon
10
>>> time.asctime((2024, 12, 10, 18, 7, 14, 1, 345, 0)) #год, месяц, день, час, минута, секунда, день недели, день года, летнее время
'Tue Dec 10 18:07:14 2024'
>>> time.ctime(time.time())
'Mon Oct 6 20:15:03 2025'
>>> time.mktime((2025, 12, 25, 15, 30, 0, 0, 0, 0))
1766665800.0
```
## 7. Графические функции
```py
>>> import pylab
>>> x=list(range(-3,55,4))
>>> t = list(range(15))
>>> pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x0000017CF2E761B0>]
>>> pylab.title('Первый график')
>>> Text(0.5, 1.0, 'Первый график')
>>> pylab.xlabel('время')
>>> Text(0.5, 0, 'время')
>>> pylab.ylabel('сигнал')
>>> Text(0, 0.5, 'сигнал')
>>> pylab.show() #
```
**Результат:**
<image src="Ris1.png">
```py
>>> X1=[12,6,8,10,7]; X2=[5,7,9,11,13]
>>> pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000017CF50861E0>]
>>> pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000017CF4FE7800>]
>>> pylab.show()
```
**Результат:**
<image src="Ris22.png">
```py
>>> region=['Центр','Урал','Сибирь','Юг']
>>> naselen=[65,12,23,17]
>>> pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x0000017CF4FF43B0>, <matplotlib.patches.Wedge object at 0x0000017CF4FF5730>, <matplotlib.patches.Wedge object at 0x0000017CF5579100>, <matplotlib.patches.Wedge object at 0x0000017CF5579580>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
>>> pylab.show()
```
**Результат:**
<image src="Ris2.png">
```py
>>> pylab.bar(region, naselen)
>>> pylab.title('Население по регионам')
Text(0.5, 1.0, 'Население по регионам')
>>> pylab.ylabel('Население (млн)')
Text(0, 0.5, 'Население (млн)')
>>> pylab.show()
```
**Результат:**
<image src="bar.png">
```py
>>> pylab.hist(naselen)
>>> pylab.title('Гистограмма распределения населения')
>>> pylab.xlabel('Население (млн)')
>>> pylab.ylabel('Частота')
>>> pylab.show()
```
**Результат:**
<image src="hist.png">
## 8. Статистический модуль statistics
```py
>>> import statistics
>>> numbers = [1,2,3,4,5,6,7,8,9]
>>> statistics.mean(numbers)
5
>>> statistics.median(numbers)
5
>>> statistics.mod(numbers)
>>> statistics.mode(numbers)
1
```

@ -0,0 +1,57 @@
# Общее контрольное задание по теме 4
Степанищев Виктор, А-03-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности ин-струкций, выполняющих следующие действия:
• Напишите и исполните единое выражение, реализующее последовательное выполнение сле-дующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деле-ния.
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стан-дартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с мо-мента предыдущего (из п.2) определения временных параметров.
## Решение
```py
import cmath
import math
import time
import random
import string
# 1
first = round(cmath.phase(0.2+0.8j), 2) * 20
print(divmod(math.floor(first), 3))
#2
moscow_time = time.localtime()
string_with_time = f"{moscow_time.tm_hour}:{moscow_time.tm_min}"
print(string_with_time, type(moscow_time))
#3
days_of_week = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье']
print(random.sample(days_of_week, 3))
#4
numbers = list(range(14, 32+1, 3))
print(random.choice(numbers))
#5
N = round(random.normalvariate(15, 4))
print(N)
gen_list = random.choices(string.ascii_uppercase, k=N)
print(gen_list)
#6
current_time = time.time()
previous_time = time.mktime(moscow_time)
time_interval_minutes = (current_time - previous_time) / 60
print(time_interval_minutes)
```

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

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

После

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

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

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

После

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

@ -0,0 +1,304 @@
# Отчёт по Теме 5
Выполнил Степанищев Виктор, А-03-23
## 1. Начало работы
```py
Создание текстового файла report.md
## 2. Ветвление по условию.
Ветвление по условию осуществляются с помощью управляющей инструкции `if`
```py
porog=10
rashod1=11
rashod2=5
dohod
0
if rashod1>=porog:
dohod=12
elif rashod2==porog:
dohod=0
else:
dohod=-8
print(dohod)
>> 12
```
```py
if rashod1>=3 and rashod2==4:
dohod=rashod1
if rashod2==porog or rashod1<rashod2:
dohod=porog
print(dohod)
>> 12
```
```py
porog=4
rashod1=3
rashod2=4
if rashod1>=3 and rashod2==4:
dohod=rashod1
if rashod2==porog or rashod1<rashod2:
dohod=porog
print(dohod)
>> 4
```
```py
porog=5
rashod1=7
rashod2=3
if porog==3:
dohod=1
elif porog==4:
dohod=2
elif porog==5:
dohod=3
else:
dohod=0
print(dohod)
>> 3
```
```py
dohod=2 if porog>=4 else 0; print(dohod)
>> 2
if porog>=5 : rashod1=6; rashod2=0;print(rashod1);print(rashod2)
>> 6
>> 0
```
## 3. Цикл по перечислению
Цикл по перечислению выполняется с помощью управляющей инструкции `for`
## 3.1. Простой цикл
```py
temperature=5
for i in range(3,18,3):
temperature+=i
```
## 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]
```
```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]
```
В одном случае мы итерируемся по постоянно изменяющейся переменной sps (изменяется путем добавления новых объектов в список),
в другом случае мы итерируемся по неизменяющемуся срезу списка sps, какой срез был, такой и остаётся
## 3.3. Рассмотрен пример
```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)
>> 495
for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
>>
```
else в данном случае значит что итерация окончилась и условие внутри не выполнилось
## 3.4. Пример с символьной строкой
```py
stroka='Это - автоматизированная система'
stroka1=" "
for ss in stroka:
stroka1+=" "+ss
stroka1
' Э т о - а в т о м а т и з и р о в а н н а я с и с т е м а'
```
## 3.5. Запись цикла в строке
```py
import math
sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
import matplotlib.pyplot as plt
pylab.plot(sps2)
plt.plot(sps2)
[<matplotlib.lines.Line2D object at 0x000001E4D54DD950>]
plt.show()
```
![Синусоидальный сигнал](Ris1.png)
## 4. Цикл "пока истинно условие"
Этот цикл выполняется с помощью управляющей инструкции `while`
## 4.1. Цикл со счетчиком
```py
rashod=300
while rashod:
print("Расход=",rashod)
rashod-=50
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
```
## 4.2. Пример с символьной строкой
```py
import math
stroka='Расчет процесса в объекте регулирования'
i=0
sps2=[]
while i<len(stroka):
r=1-2/(1+math.exp(0.1*i))
sps2.append(r)
print('Значение в момент',i,"=",r)
i+=1
Значение в момент 0 = 0.0
Значение в момент 1 = 0.049958374957880025
Значение в момент 2 = 0.09966799462495568
Значение в момент 3 = 0.14888503362331795
Значение в момент 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
plt.plot(sps2)
[<matplotlib.lines.Line2D object at 0x000001E4D55AEAD0>]
plt.show()
```
![Сигнал на выходе инерционного звена](Ris2.png)
## 4.3. Определение, является ли число простым
```py
chislo=267
kandidat=chislo//2
while kandidat>1:
if chislo%kandidat==0:
print(chislo,' имеет множитель ',kandidat)
break
kandidat -=1
else:
print(chislo,' является простым.')
267 имеет множитель 89
```
Дополненная программа
```py
for i in range(250,300+1):
chislo=i
kandidat=chislo//2
while kandidat>1:
if chislo%kandidat==0:
print(chislo,' имеет множитель ',kandidat)
break
kandidat -=1
else:
print(chislo,' является простым.')
250 имеет множитель 125
251 является простым.
252 имеет множитель 126
253 имеет множитель 23
254 имеет множитель 127
255 имеет множитель 85
256 имеет множитель 128
257 является простым.
258 имеет множитель 129
259 имеет множитель 37
260 имеет множитель 130
261 имеет множитель 87
262 имеет множитель 131
263 является простым.
264 имеет множитель 132
265 имеет множитель 53
266 имеет множитель 133
267 имеет множитель 89
268 имеет множитель 134
269 является простым.
270 имеет множитель 135
271 является простым.
272 имеет множитель 136
273 имеет множитель 91
274 имеет множитель 137
275 имеет множитель 55
276 имеет множитель 138
277 является простым.
278 имеет множитель 139
279 имеет множитель 93
280 имеет множитель 140
281 является простым.
282 имеет множитель 141
283 является простым.
284 имеет множитель 142
285 имеет множитель 95
286 имеет множитель 143
287 имеет множитель 41
288 имеет множитель 144
289 имеет множитель 17
290 имеет множитель 145
291 имеет множитель 97
292 имеет множитель 146
293 является простым.
294 имеет множитель 147
295 имеет множитель 59
296 имеет множитель 148
297 имеет множитель 99
298 имеет множитель 149
299 имеет множитель 23
300 имеет множитель 150
```

@ -0,0 +1,111 @@
# Общее контрольное задание по Теме 5
Степанищев Виктор, А-03-23
## Задание
Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач:
-Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите.
-Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).
-Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
## Решение
```py
alphabet="abcdefghijklmnopqrstuvwxyz"
stroka="My name is Viktor. I am a student of MPEI"
for cur_ind in range(len(stroka)):
low_stroka=stroka.lower()
letter=low_stroka[cur_ind]
if not letter in alphabet:
continue
else:
print("Порядковый номер буквы ",letter," - ", alphabet.index(letter)+1)
Порядковый номер буквы m - 13
Порядковый номер буквы y - 25
Порядковый номер буквы n - 14
Порядковый номер буквы a - 1
Порядковый номер буквы m - 13
Порядковый номер буквы e - 5
Порядковый номер буквы i - 9
Порядковый номер буквы s - 19
Порядковый номер буквы v - 22
Порядковый номер буквы i - 9
Порядковый номер буквы k - 11
Порядковый номер буквы t - 20
Порядковый номер буквы o - 15
Порядковый номер буквы r - 18
Порядковый номер буквы i - 9
Порядковый номер буквы a - 1
Порядковый номер буквы m - 13
Порядковый номер буквы a - 1
Порядковый номер буквы s - 19
Порядковый номер буквы t - 20
Порядковый номер буквы u - 21
Порядковый номер буквы d - 4
Порядковый номер буквы e - 5
Порядковый номер буквы n - 14
Порядковый номер буквы t - 20
Порядковый номер буквы o - 15
Порядковый номер буквы f - 6
Порядковый номер буквы m - 13
Порядковый номер буквы p - 16
Порядковый номер буквы e - 5
Порядковый номер буквы i - 9
```
```py
text="Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом)."
text=text.replace('.','')
text=text.replace(',','')
text=text.replace('(','')
text=text.replace(')','')
text=text.replace(':','')
text=text.replace('–','')
print(text)
'Создайте список со словами из задания данного пункта Для этого списка определите есть ли в нем некоторое заданное значение и выведите соответствующее сообщение либо о нахождении элемента либо о его отсутствии в списке проверить как с имеющимся так и с отсутствующим словом'
text=text.replace(' ',' ')
print(text)
>> 'Создайте список со словами из задания данного пункта Для этого списка определите есть ли в нем некоторое заданное значение и выведите соответствующее сообщение либо о нахождении элемента либо о его отсутствии в списке проверить как с имеющимся так и с отсутствующим словом'
spis=text.split()
print(spis)
>> ['Создайте', 'список', 'со', 'словами', 'из', 'задания', 'данного', 'пункта', 'Для', 'этого', 'списка', 'определите', 'есть', 'ли', 'в', 'нем', 'некоторое', 'заданное', 'значение', 'и', 'выведите', 'соответствующее', 'сообщение', 'либо', 'о', 'нахождении', 'элемента', 'либо', 'о', 'его', 'отсутствии', 'в', 'списке', 'проверить', 'как', 'с', 'имеющимся', 'так', 'и', 'с', 'отсутствующим', 'словом']
search_word1='проверить'
search_word2='промах'
if search_word1 in spis:
print("Слово '",search_word1,"' найдено в списке слов.")
else:
print("Слово '",search_word1,"' не найдено в списке слов.")
>> Слово ' проверить ' найдено в списке слов.
if search_word2 in spis:
print("Слово '",search_word2,"' найдено в списке слов.")
else:
print("Слово '",search_word2,"' не найдено в списке слов.")
>> Слово ' промах ' не найдено в списке слов.
```
```py
surname_summer=['Tabolin','Berezhkov','Krishtul','Stepanischev']
sr_ball_summer=[3.35,4,3.5,3.5]
surname_winter=['Stepanischev','Tabolin','Krishtul','Berezhkov']
sr_ball_winter=[4,4.25,4.5,3]
key=1
while k:
search_surname=input("Фамилия:")
Фамилия:Tabolin
if (search_surname in surname_summer) and (search_surname in surname_winter):
print("Средний балл студента с фамилией",search_surname,"по зимней сессии -", sr_ball_winter[surname_winter.index(search_surname)], ", а по летней -",sr_ball_summer[surname_summer.index(search_surname)])
key=0
else:
print("Студент с такой фамилией не найден")
>> Средний балл студента с фамилией Tabolin по зимней сессии - 4.25 , а по летней - 3.35
```

@ -0,0 +1,38 @@
# Индивидуальное контрольное задание по ТЕМЕ №5
Степанищев Виктор, А-03-23
## Задание
```
#24
Создайте словарь с 30 элементами, состоящими из ключей – целых чисел от 0 до 29, и значений – случайных,
равномерно распределенных чисел в интервале значений от -10 до +7.
Рассчитайте сумму неотрицательных значений из словаря и отобразите её в виде строки:
«Сумма неотрицательных значений словаря= XXX».
```
## Решение
```py
from random import uniform
def generation_slovar():
slovar = {}
for k in range(30):
slovar[k] = uniform(-10, +7)
return slovar
slovar = generation_slovar()
s = 0
for keys in slovar:
value = slovar[keys]
if value >= 0:
s += value
print(f"Сумма неотрицательных значений словаря = {s}")
```
Вывод:
```py
Сумма неотрицательных значений словаря = 51.80214076598058
```
```py
Сумма неотрицательных значений словаря = 22.200516011214674
```

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