Сравнить коммиты
65 Коммитов
| Автор | SHA1 | Дата | |
|---|---|---|---|
| f1f9be3b08 | |||
| 37b15e5294 | |||
| 3503f062d1 | |||
| ffcd01212b | |||
| cde8cf6e18 | |||
| b6c5107042 | |||
| 70e6bb49fc | |||
| 4c5d3da262 | |||
| 80c9459ab5 | |||
| 2981ae7bf8 | |||
| b7664a9b80 | |||
| 9af985a171 | |||
| fc9b288c78 | |||
| e3626c5feb | |||
| 8750e11f20 | |||
| 48013eaee0 | |||
| 15480b753d | |||
| e308449e5a | |||
| 8edd723e73 | |||
| 95f1c7c0e0 | |||
| e8d65a57b0 | |||
| 3821a37f6e | |||
| 5fd585628f | |||
| 1af5799fcb | |||
| 2f7c8fc9cd | |||
| 4a0a1f7081 | |||
| 9024e7bc9c | |||
| e7e2adec2b | |||
| 021fa30bb0 | |||
| 8c5468e41c | |||
| 9ff914d8f8 | |||
| aab194cd9e | |||
| 6dc818f770 | |||
| 9261c4489a | |||
| fcea7d67b0 | |||
| e2ed7c1712 | |||
| 7d21cf1611 | |||
| 82a49cd876 | |||
| 390a8238be | |||
| d2aca69378 | |||
| 79cde5bd5f | |||
| 44cf57a8dd | |||
| ad6bd31822 | |||
| fa57cdd6a8 | |||
| 141871a599 | |||
| 65f741e423 | |||
| 62201d4115 | |||
| 8e87c89a8c | |||
| 72ba151843 | |||
| f790e7f8d0 | |||
| 1104ac32a3 | |||
| 118e2ba815 | |||
| 6db2eed338 | |||
| 8dbd035be6 | |||
| ccf7c2c874 | |||
| abe11e9434 | |||
| fb860d6205 | |||
| b776515305 | |||
|
|
cfe7ffb000 | ||
|
|
047e22e2db | ||
|
|
8de06b1b7a | ||
|
|
bf03aae430 | ||
|
|
66abe82426 | ||
|
|
0fb7dbd5a5 | ||
|
|
9f93bed94e |
Двоичные данные
TEMA1/pic0.png
Обычный файл
|
После Ширина: | Высота: | Размер: 13 KiB |
Двоичные данные
TEMA1/pic1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 16 KiB |
Двоичные данные
TEMA1/pic10.png
Обычный файл
|
После Ширина: | Высота: | Размер: 416 KiB |
Двоичные данные
TEMA1/pic2.png
Обычный файл
|
После Ширина: | Высота: | Размер: 18 KiB |
Двоичные данные
TEMA1/pic3.png
Обычный файл
|
После Ширина: | Высота: | Размер: 36 KiB |
Двоичные данные
TEMA1/pic4.png
Обычный файл
|
После Ширина: | Высота: | Размер: 8.6 KiB |
Двоичные данные
TEMA1/pic5.png
Обычный файл
|
После Ширина: | Высота: | Размер: 14 KiB |
Двоичные данные
TEMA1/pic6.png
Обычный файл
|
После Ширина: | Высота: | Размер: 74 KiB |
Двоичные данные
TEMA1/pic7.png
Обычный файл
|
После Ширина: | Высота: | Размер: 38 KiB |
Двоичные данные
TEMA1/pic8.png
Обычный файл
|
После Ширина: | Высота: | Размер: 316 KiB |
Двоичные данные
TEMA1/pic9.png
Обычный файл
|
После Ширина: | Высота: | Размер: 29 KiB |
6
TEMA1/pr0.py
Обычный файл
@@ -0,0 +1,6 @@
|
|||||||
|
#Программа по теме 1 Добровольска Елизавета
|
||||||
|
|
||||||
|
print('Hello')
|
||||||
|
h=input('Your name=')
|
||||||
|
import os
|
||||||
|
os.chdir('C:\\Users\\u522-16\\Desktop\\python-labs\\TEMA1\\')
|
||||||
178
TEMA1/report.md
Обычный файл
@@ -0,0 +1,178 @@
|
|||||||
|
# Отчет по теме 1
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## 1 Была создана папка ТЕМА1 в GITHUB
|
||||||
|
|
||||||
|
## 2 Был запущен интерпритатор на выполнение
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 3 Была применена команда печати
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> print('Hello')
|
||||||
|
Hello
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4 Была применена команда ввода текста пользователем
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> h=input('Your name=')
|
||||||
|
Your name=Jelizaveta
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5 Интерпретатор был закрыт
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> exit()
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6 Была запущена интерактивная графическая оболочка IDLE
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 7 Была изучена функциональность окна IDLE
|
||||||
|
|
||||||
|
## 8 Был задан путь к рабочему каталогу
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import os
|
||||||
|
>>> os.chdir('C:\\Users\\u522-16\\Desktop\\python-labs\\TEMA1\\')
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9 Был изменен дизайн окна
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## 10 Была записана программа в файл и запущена различными способами
|
||||||
|
|
||||||
|
## 10.1 Команды были записаны в файл с расширением .py и программа запущена на выполнение с помощью функции run в интерфейсе IDLE
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 10.2 Тот же файл был запущен с помощью команды import:
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import pr0.py
|
||||||
|
Hello
|
||||||
|
Your name=Liza
|
||||||
|
```
|
||||||
|
|
||||||
|
## 10.3 Тот же файл с программой был запущен с помощью клавиши F5:
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>
|
||||||
|
==================== RESTART: C:\Users\u522-16\Desktop\python-labs\TEMA1\pr0.py ====================
|
||||||
|
Hello
|
||||||
|
Your name=Jelizaveta
|
||||||
|
```
|
||||||
|
|
||||||
|
## 11 Была запущена программа prb1.py с помощью команды import
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import prb1.py
|
||||||
|
Как Вас зовут? Liza
|
||||||
|
Привет, Liza
|
||||||
|
```
|
||||||
|
|
||||||
|
## 12 Была произведена попытка открытия в среде IDLE файла с расширением .рус и изучен результат
|
||||||
|
|
||||||
|
## 12.1 Попытка открытия файла с расширением .рус
|
||||||
|
|
||||||
|
В результате попытки открыть в среде IDLE файл с расширением .рус, программа написала предупреждение о том, что невозможно запустить файл с подобной кодировкой.
|
||||||
|
Это произошло потому, что в данной среде возможно открыть только файлы с расширением .py
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Файл с расширением .рус содержит байт-код - низкоуровненое представление программы, которое нужно для того, чтоб написанный код смогла прочитать виртуальная машина.
|
||||||
|
При запуске программы, автоматически произошла компиляция (процесс преобразования кода с одного языка программирования на другой), котоорая нужна для того, чтобы компьютер мог исполнить код.
|
||||||
|
|
||||||
|
## 12.2 Был открыт текст данного файла:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## 14 Был изучен отдел помощи в IDLE
|
||||||
|
|
||||||
|
## 14.1 Был изучен раздел Help
|
||||||
|
|
||||||
|
Предлагается информация о самом IDLE (версия, лицензия и тд), документация по среде, где можно найти описание имеющихся функций и интерфейса и работы с программой,
|
||||||
|
документация по Питону, где можно узнать о программирование на самом языке, а также имеется раздел с разными примерами графических программ.
|
||||||
|
|
||||||
|
## 14.2 Была изучена команда help:
|
||||||
|
|
||||||
|
```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.
|
||||||
|
```
|
||||||
|
|
||||||
|
## 14.3 Были введены две команды в одной строке:
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>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.
|
||||||
|
```
|
||||||
|
|
||||||
|
## 14.4 В документации по Питону была найдена информация по функции print():
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 15 Были изучены графические примеры среды
|
||||||
|
|
||||||
|
## 15.1 Был изучен раздел окон, а именно переключение между ними:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 15.2 Был просмотрен график из программы tdemo_chaos:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 15.3 Был просмотрен текст этой же программы:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 15.4 Был изучен раздел помощи по графическим программам и пример с часами:
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Подобные примеры можно использовать как шаблоны для необходимых графических программ, а так же для поиска необходимых функций, с помощью которых можно создавать графики.
|
||||||
|
|
||||||
|
## 16 Была завершена работа со средой
|
||||||
12
TEMA1/test.md
Обычный файл
@@ -0,0 +1,12 @@
|
|||||||
|
# Общее контрольное задание по теме 1
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Вопрос
|
||||||
|
|
||||||
|
Что означает название интерактивной оболочки IDLE?
|
||||||
|
|
||||||
|
## Ответ
|
||||||
|
|
||||||
|
Название IDLE расшифровывается как Integrated Development and Learning environment, что переводится как интегрированная среда развития и обучения.
|
||||||
|
Оно говорит о том, что среда предназначена для обучения программированию и простого написания кода.
|
||||||
Двоичные данные
TEMA2/pic0.png
Обычный файл
|
После Ширина: | Высота: | Размер: 33 KiB |
426
TEMA2/report.md
Обычный файл
@@ -0,0 +1,426 @@
|
|||||||
|
# Отчет по теме 2
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## 1 Создание протокола в IDLE
|
||||||
|
|
||||||
|
Был установлен рабочий каталог и создан протокол в среде IDLE
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 2 Создание обьектов и работа с ними
|
||||||
|
|
||||||
|
Были созданы обьекты, просмотренно значение созданных обьектов, просмотренны существувющие обьекты, удалены обьекты
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>f1=16; f2=3
|
||||||
|
>>>f1,f2
|
||||||
|
(16, 3)
|
||||||
|
>>>f1;f2
|
||||||
|
16
|
||||||
|
3
|
||||||
|
>>>dir()
|
||||||
|
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os']
|
||||||
|
>>>dir(f1)
|
||||||
|
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'is_integer', 'numerator', 'real', 'to_bytes']
|
||||||
|
>>>type(f2)
|
||||||
|
<class 'int'>
|
||||||
|
>>>del f1,f2
|
||||||
|
>>>dir()
|
||||||
|
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os']
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3 Создание обьектов различных типов
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>gg1=1.6 #значение в виде вещественного числа
|
||||||
|
>>>gg1
|
||||||
|
1.6
|
||||||
|
>>>hh1='Строка' #значение в виде символьной строки
|
||||||
|
>>>hh1
|
||||||
|
'Строка'
|
||||||
|
>>>73sr=3 #неправильное имя – начинается с цифры - будет диагностика!
|
||||||
|
SyntaxError: invalid decimal literal
|
||||||
|
>>>and=7 #недопустимое имя – совпадает с ключевым словом - будет диагностика!
|
||||||
|
SyntaxError: invalid syntax
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4 Просмотр и сохранение в переменной ключевых слов
|
||||||
|
|
||||||
|
```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']
|
||||||
|
>>>kk = keyword.kwlist
|
||||||
|
>>>kk
|
||||||
|
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5 Изучение встроенных идентификаторов
|
||||||
|
|
||||||
|
Был выведен список встроенных идентификаторов и изучен некоторый список функций с помощью функции help:
|
||||||
|
abs - выдает значение по модулю;
|
||||||
|
len - выдает длину обьекта;
|
||||||
|
max - выдает максимальное число из списка введенных в аргумент;
|
||||||
|
min - выдает минимальное число из списка введенных в аргумент;
|
||||||
|
pow - при двух аргументах: возводит первый в степень второго, при наличие третьего аргумента делит получившийся результат на третий аргумент и показывает остаток;
|
||||||
|
round - округляет число до целого (при отсутствии второго аргумента), а при наличие второго аргумента округляет по стольких цифр после запятой, сколько указано во втором аргументе;
|
||||||
|
sorted - сортирует числа или буквы слова по возрастанию или убыванию;
|
||||||
|
sum - суммирует числа;
|
||||||
|
zip - создает итератор, который объединяет элементы из нескольких перебираемых объектов по соответствию.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import builtins
|
||||||
|
>>>dir(builtins)
|
||||||
|
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
|
||||||
|
>>>abs(-5)
|
||||||
|
5
|
||||||
|
>>>len("hi")
|
||||||
|
2
|
||||||
|
>>>max(3, 4)
|
||||||
|
4
|
||||||
|
>>>min(3, 4)
|
||||||
|
3
|
||||||
|
>>>pow(3, 2)
|
||||||
|
9
|
||||||
|
>>>pow(3, 2, 3)
|
||||||
|
0
|
||||||
|
>>>round(5.675, 2)
|
||||||
|
5.67
|
||||||
|
>>>sorted([3, 4, 1])
|
||||||
|
[1, 3, 4]
|
||||||
|
>>>sorted("cdab")
|
||||||
|
['a', 'b', 'c', 'd']
|
||||||
|
>>>sum([2, 3])
|
||||||
|
5
|
||||||
|
>>>list(zip([1, 2, 3], ["a", "b", "c"]))
|
||||||
|
[(1, 'a'), (2, 'b'), (3, 'c')]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6 Изучение различи восприятия программой маленьких и больших букв
|
||||||
|
|
||||||
|
Были созданы две переменные с именами, в которых отличается только размер одной буквы. Был сделан вывод, что для программы это две разные переменные.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>Gg1=45
|
||||||
|
>>>Gg1
|
||||||
|
45
|
||||||
|
>>>gg1
|
||||||
|
1.6
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7 Изучение базовых типов обьектов
|
||||||
|
|
||||||
|
Были изучены различные основные типа обьектов и произведены некоторые операции с ними.
|
||||||
|
|
||||||
|
## 7.1 Изучение логического типа обьекта (bool)
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>bb1=True; bb2=False
|
||||||
|
>>>bb1;bb2
|
||||||
|
True
|
||||||
|
False
|
||||||
|
>>>type(bb1) #функция, показывающая тип (класс) объекта
|
||||||
|
<class 'bool'>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7.2 Изучение простых типов обьектов (int, float, complex)
|
||||||
|
|
||||||
|
Были созданны переменные классов int, float, complex. Было выяснено, что двоичное число сохранено в обьекте класса int, как и например шестнадцатеричное число. А вот при экспоненциальной форме записи вещественного числа оно созраняется в обьекте класса float.
|
||||||
|
|
||||||
|
```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) #Создается комплексное число
|
||||||
|
>>>type(cc1)
|
||||||
|
<class 'complex'>
|
||||||
|
>>>type(shest1)
|
||||||
|
<class 'int'>
|
||||||
|
>>>type(ff1)
|
||||||
|
<class 'float'>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7.3 Изучение типа обьекта - строка символов
|
||||||
|
|
||||||
|
Были созданы обьекты типа строка, также использованы экранированные последовательности для переноса текста на разные строки. Было произведено обращение к элементам строки. Было произведено переопределение текста обьекта.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>ss1='Это - строка символов'
|
||||||
|
>>>ss1
|
||||||
|
'Это - строка символов'
|
||||||
|
>>>ss1="Это - строка символов"
|
||||||
|
>>>ss1
|
||||||
|
'Это - строка символов'
|
||||||
|
>>>ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
|
||||||
|
>>>print(ss1a)
|
||||||
|
Это - " строка символов ",
|
||||||
|
выводимая на двух строках
|
||||||
|
>>>ss1b= 'Меня зовут: \n Добровольска Е.'
|
||||||
|
>>>print(ss1b)
|
||||||
|
Меня зовут:
|
||||||
|
Добровольска Е.
|
||||||
|
>>>mnogo="""Нетрудно заметить , что в результате операции
|
||||||
|
над числами разных типов получается число,
|
||||||
|
имеющее более сложный тип из тех, которые участвуют в операции."""
|
||||||
|
>>>print(mnogo)
|
||||||
|
Нетрудно заметить , что в результате операции
|
||||||
|
над числами разных типов получается число,
|
||||||
|
имеющее более сложный тип из тех, которые участвуют в операции.
|
||||||
|
>>>ss1[0] #Это – символ «Э»
|
||||||
|
'Э'
|
||||||
|
>>>ss1[8] #А это – символ «р»
|
||||||
|
'р'
|
||||||
|
>>>ss1[-2] #А это – символ «о» (при знаке «-»(минус) отсчет от конца строки)
|
||||||
|
'о'
|
||||||
|
>>>ss1[6:9] #Это часть строки – символы с 6-го индекса по 8-й (9-й не включается!)
|
||||||
|
'стр'
|
||||||
|
>>>ss1[13:] #Это часть строки – с 13-го индекса и до конца
|
||||||
|
'символов'
|
||||||
|
>>>ss1[:13] #Это часть строки – с начала и до 12-го индекса включительно
|
||||||
|
'Это - строка '
|
||||||
|
>>>ss1[5:-8] #Это часть строки – с 5-го индекса и до 8-го от конца
|
||||||
|
' строка '
|
||||||
|
>>>ss1[3:17:2] #Часть строки – с 3-го по 16-й индексы с шагом 2
|
||||||
|
' тоасм'
|
||||||
|
>>>ss1[17:3:-2]
|
||||||
|
'омсаот '
|
||||||
|
>>>ss1[-4:3:-2]
|
||||||
|
'омсаот '
|
||||||
|
>>>ss1[4]='=' # Будет диагностика!
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#80>", line 1, in <module>
|
||||||
|
ss1[4]='=' # Будет диагностика!
|
||||||
|
TypeError: 'str' object does not support item assignment
|
||||||
|
>>>ss1=ss1[:4]+'='+ss1[5:]
|
||||||
|
>>>ss1
|
||||||
|
'Это = строка символов'
|
||||||
|
>>>ss1b[14:19]
|
||||||
|
'Добро'
|
||||||
|
>>>ss1b[14:19:2]
|
||||||
|
'Дбо'
|
||||||
|
>>>ss1b[19:14:-2]
|
||||||
|
'вро'
|
||||||
|
```
|
||||||
|
|
||||||
|
Также были самостоятельно созданы обьекты разных типов и просмотренн их класс и значение:
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>gh = 3.7865
|
||||||
|
>>>type(gh)
|
||||||
|
<class 'float'>
|
||||||
|
>>>jk = 3
|
||||||
|
>>>type(jk)
|
||||||
|
<class 'int'>
|
||||||
|
>>>sl = "aaaa"
|
||||||
|
>>>type(sl)
|
||||||
|
<class 'str'>
|
||||||
|
>>>ss = 5+2j
|
||||||
|
>>>type(ss)
|
||||||
|
<class 'complex'>
|
||||||
|
>>>gh
|
||||||
|
3.7865
|
||||||
|
>>>jk
|
||||||
|
3
|
||||||
|
>>>sl
|
||||||
|
'aaaa'
|
||||||
|
>>>ss
|
||||||
|
(5+2j)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 8 Изучение сложных типов обьектов
|
||||||
|
|
||||||
|
## 8.1 Изучение типа обьекта - список
|
||||||
|
|
||||||
|
Был создан список, произведено обращение к элементам списка, выведена длина списка, просмотрены и применены методы обьекта, а также произведено добавление элемента к списку и удаление элемента из списка.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>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] #В данный список вошло 4 элемента, с 8 с конца до последнего с шагом 2. То есть с индексами 1,3,5,7
|
||||||
|
>>>spis1[1]='Список'
|
||||||
|
>>>spis1
|
||||||
|
[111, 'Список', (5-9j)]
|
||||||
|
>>>len(spis1)
|
||||||
|
3
|
||||||
|
>>>dir(spis1)
|
||||||
|
['__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']
|
||||||
|
>>>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') # В конец списка добавлен элемент «New item»
|
||||||
|
>>>spis1+['New item']
|
||||||
|
[111, 'Список', (5-9j), 'New item', 'New item']
|
||||||
|
>>>spis1+[ss1b]
|
||||||
|
>>>[111, 'Список', (5-9j), 'New item', 'Меня зовут: \n Добровольска Е.']
|
||||||
|
>>>spis1.pop(1)
|
||||||
|
'Список'
|
||||||
|
>>>spis1
|
||||||
|
[111, (5-9j), 'New item']
|
||||||
|
```
|
||||||
|
|
||||||
|
Также были изучены и применены самомтоятельно некоторые методы:
|
||||||
|
|
||||||
|
insert - вставляет элемент с второго аргумента на позицию c первого аргумента;
|
||||||
|
remove - удаляет первый элемент из списка, который соответствует аргументу (его значению);
|
||||||
|
extend - добaвляет в конец списка все элемента из обьекта в аргументе;
|
||||||
|
clear - очищает список;
|
||||||
|
sort - сортирует элементы по порядку;
|
||||||
|
reverse - переворачивает порядок элементов;
|
||||||
|
copy - создает копию списка;
|
||||||
|
count - возвращает число, сколько раз элемент из аргумента встиречается в списке;
|
||||||
|
index - возвращает индекс первого элемента соответствующему аргументу.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>lis = [1,2,3,4,5,6,8,9]
|
||||||
|
>>>lis
|
||||||
|
[1, 2, 3, 4, 5, 6, 8, 9]
|
||||||
|
>>>lis.insert(6, 7)
|
||||||
|
>>>lis
|
||||||
|
[1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
|
>>>lis.remove(5)
|
||||||
|
>>>lis
|
||||||
|
[1, 2, 3, 4, 6, 7, 8, 9]
|
||||||
|
>>>lis.extend(sus)
|
||||||
|
>>>lis
|
||||||
|
[1, 2, 3, 4, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
|
>>>lis.sort()
|
||||||
|
>>>lis
|
||||||
|
[1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9]
|
||||||
|
>>>lis.reverse()
|
||||||
|
>>>lis
|
||||||
|
[9, 9, 8, 8, 7, 7, 6, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1]
|
||||||
|
>>>lis.copy()
|
||||||
|
[9, 9, 8, 8, 7, 7, 6, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1]
|
||||||
|
>>>lis.count(8)
|
||||||
|
2
|
||||||
|
>>>lis.index(7)
|
||||||
|
4
|
||||||
|
>>>lis.clear()
|
||||||
|
>>>lis
|
||||||
|
[]
|
||||||
|
```
|
||||||
|
Был создан вложенный список, а также самостоятельно был создан список из элементов разных классов: число, строка, логическое значение, список.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>spis2=[spis1,[4,5,6,7]] #здесь элементами являются два списка
|
||||||
|
>>>spis2[0][1] #обращение к элементу списка spis1
|
||||||
|
(5-9j)
|
||||||
|
>>>spis2[0][1]=78 #Убедитесь, что значение элемента заменено на 78
|
||||||
|
>>>spis2
|
||||||
|
[[111, 78, 'New item'], [4, 5, 6, 7]]
|
||||||
|
>>>spis1
|
||||||
|
[111, 78, 'New item'] #spis1 изменился, поскольку присваивание списка переменной (или включение списка в другой список) создает ссылку, а не копию. Списки являются изменяемыми, поэтому изменение списка через одну ссылку влияет и на другие ссылки, указывающие на этот же список.
|
||||||
|
>>>spisochek=[jk, ss1, bb1, lis]
|
||||||
|
>>>spisochek
|
||||||
|
[3, 'Это = строка символов', True, []]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 8.2 Изучение типа обьекта - обьект-кортеж
|
||||||
|
|
||||||
|
Был создан обьект кортеж, к нему были добывлены элементы, кортеж был переопределен, были применены некоторые методы (index, count), была произведена попытка изменить кортеж, а также самостоятельно был создан кортеж с элементами разных типов: число, строка, список, кортеж.
|
||||||
|
|
||||||
|
```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
|
||||||
|
4
|
||||||
|
>>>kort1.count(222) #Будет получено значение 1
|
||||||
|
1
|
||||||
|
>>>kort1[2]=90 #Будет получена диагностика о невозможности изменения кортежа
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#159>", line 1, in <module>
|
||||||
|
kort1[2]=90 #Будет получена диагностика о невозможности изменения кортежа
|
||||||
|
TypeError: 'tuple' object does not support item assignment
|
||||||
|
>>>kort3=(4, "ppp", lis, kort1)
|
||||||
|
>>>kort3
|
||||||
|
(4, 'ppp', [], (222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n Добровольска Е.'))
|
||||||
|
```
|
||||||
|
|
||||||
|
## 8.3 Изучение типа обьекта - Объект-словарь
|
||||||
|
|
||||||
|
Был создан словарь, произведено обращение к его элементу, добавлен элемент, словарь был отсортирован по ключу и по значению, были созданы словари с помощью dict и zip. Также самостоятельно был создан словарь из списка и кортежа с помощью dict и zip.
|
||||||
|
|
||||||
|
```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)])
|
||||||
|
>>>dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
|
||||||
|
>>>kort4=(1,2,3,4,5,6,7)
|
||||||
|
>>>lis1=["a", "b", "c", "d", "e"]
|
||||||
|
>>>dic4
|
||||||
|
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня зовут: \n Добровольска Е.'}
|
||||||
|
>>>dic5
|
||||||
|
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут: \n Добровольска Е.'}
|
||||||
|
>>>dic7=dict(zip(kort4, lis1))
|
||||||
|
>>>dic7
|
||||||
|
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
|
||||||
|
>>>len(dic7) #Длина словаря равна 5, поскольку zip объединяет элементы из перебираемых объектов пока не закончится самый короткий из них.
|
||||||
|
5
|
||||||
|
>>>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('линия связи')
|
||||||
|
>>>mnoz1
|
||||||
|
{'микропроцессор', 'реле', 'двигатель', 'датчик'}
|
||||||
|
>>>mno={"loo", "uu", 3, kort1}
|
||||||
|
>>>mno
|
||||||
|
{3, 'loo', 'uu', (222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n Добровольска Е.')}
|
||||||
|
>>>mno.add(6)
|
||||||
|
>>>mno
|
||||||
|
{'loo', 3, 6, 'uu', (222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n Добровольска Е.')}
|
||||||
|
>>>"kkk" in mno
|
||||||
|
False
|
||||||
|
```
|
||||||
|
## 9 Завершение работы в IDLE
|
||||||
|
|
||||||
|
Был закончен сеанс работы в IDLE
|
||||||
42
TEMA2/task.md
Обычный файл
@@ -0,0 +1,42 @@
|
|||||||
|
# Общее контрольное задание по теме 2
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
|
||||||
|
• Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции.
|
||||||
|
• Создать переменную со значением, совпадающим с первой буквой из familia.
|
||||||
|
• Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
|
||||||
|
• Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
|
||||||
|
• Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
|
||||||
|
• Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
|
||||||
|
• Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
|
||||||
|
• Создайте словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>familia="Dobrovolska"
|
||||||
|
>>>dd=familia[0]
|
||||||
|
>>>dd
|
||||||
|
'D'
|
||||||
|
>>>import keyword
|
||||||
|
>>>sp_kw=keyword.kwlist
|
||||||
|
>>>sp_kw
|
||||||
|
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||||
|
>>>sp_kw.remove("nonlocal")
|
||||||
|
>>>sp_kw
|
||||||
|
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||||
|
>>>kort_nam=("Liza", "Vera", "Nastya", "Lena")
|
||||||
|
>>>type(kort_nam)
|
||||||
|
<class 'tuple'>
|
||||||
|
|
||||||
|
>>>kort_nam=kort_nam+("Dana", "Katya")
|
||||||
|
>>>kort_nam
|
||||||
|
('Liza', 'Vera', 'Nastya', 'Lena', 'Dana', 'Katya')
|
||||||
|
>>>kort_nam.count("Dima")
|
||||||
|
0
|
||||||
|
>>>dict_bas={"строка":[familia, dd], "список":[sp_kw], "кортеж": [kort_nam]}
|
||||||
|
>>>dict_bas
|
||||||
|
{'строка': ['Dobrovolska', 'D'], 'список': [['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']], 'кортеж': [('Liza', 'Vera', 'Nastya', 'Lena', 'Dana', 'Katya')]}
|
||||||
21
TEMA2/test.md
Обычный файл
@@ -0,0 +1,21 @@
|
|||||||
|
## Общее контрольное задание по теме 2
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Предполагается выполнить инструкцию
|
||||||
|
fg={'a':23,'b':45,'c':-12}
|
||||||
|
К какому классу будет относиться созданный объект? Напишите инструкцию расчета суммы значений первого и третьего элементов.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Созданный обьект будет относится к классу "словарь".
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>type(fg)
|
||||||
|
>>><class 'dict'>
|
||||||
|
>>>summa = fg["a"]+fg["c"]
|
||||||
|
>>>summa
|
||||||
|
11
|
||||||
|
```
|
||||||
Двоичные данные
TEMA3/pic0.png
Обычный файл
|
После Ширина: | Высота: | Размер: 13 KiB |
721
TEMA3/report.md
Обычный файл
@@ -0,0 +1,721 @@
|
|||||||
|
# Отчет по теме 3
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## 1 Запуск интерактивной оболочки IDLE
|
||||||
|
|
||||||
|
Была запущена интерактивная оболочка IDLE и создан протокол
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 2 Преобразование базовых типов обьектов в другие типы
|
||||||
|
|
||||||
|
Было изучено, как преобразовывать обьекты одного типа, в обьекты другого типа.
|
||||||
|
|
||||||
|
## 2.1 Преобразование обьектов в логический тип данных
|
||||||
|
|
||||||
|
Было изучено, как преобразовывать обьекты типа строка и число, в обьекты логического типа.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>logiz1=bool(56)
|
||||||
|
>>>logiz2=bool(0)
|
||||||
|
>>>logiz3=bool("Beta")
|
||||||
|
>>>logiz4=bool("")
|
||||||
|
>>>logiz1
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.2 Преобразование обьектов в числовой тип данных
|
||||||
|
|
||||||
|
Было изучено, как преобразовывать обьекты типа строка и число, в обьекты целого и вещественного типа int и float.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>tt1=int(198.6) #Отбрасывается дробная часть
|
||||||
|
>>>tt1
|
||||||
|
198
|
||||||
|
>>>tt2=int("-76") #Число – в строке символов, система по умолчанию - десятичная
|
||||||
|
>>>tt2
|
||||||
|
-76
|
||||||
|
>>>tt3=int("B",16) #В шестнадцатиричной системе буква "В" соответствует числу 11
|
||||||
|
>>>tt3
|
||||||
|
11
|
||||||
|
>>>tt4=int("71",8) #71 преобразуется в число в восьмеричной системе
|
||||||
|
>>>tt4
|
||||||
|
57
|
||||||
|
>>>tt5=int("98.76") #Число представлено в виде строки, но само по себе оно относится к вещественным числам (типа float), поэтому сразу невозможно его преобразовать в целое. Для такого преобразования надо сначала переопределить его как float, а уже потом как int.
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#14>", line 1, in <module>
|
||||||
|
tt5=int("98.76")
|
||||||
|
ValueError: invalid literal for int() with base 10: '98.76'
|
||||||
|
>>>flt1=float(789)
|
||||||
|
>>>flt1
|
||||||
|
789.0
|
||||||
|
>>>flt2=float(-6.78e2)
|
||||||
|
>>>flt2
|
||||||
|
-678.0
|
||||||
|
>>>flt3=float("Infinity")
|
||||||
|
>>>flt3
|
||||||
|
inf
|
||||||
|
>>>flt4=float("-inf")
|
||||||
|
>>>flt4
|
||||||
|
-inf
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 2.3 Преобразование целочисленных обьектов в строки с двоичным, восьмеричным и шестнадцатеричным представлением и обратное представление
|
||||||
|
|
||||||
|
Были преобразованы целочисленных обьекты в строки с двоичным, восьмеричным и шестнадцатеричным представлением и обратно представлены в целочисленном виде.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>hh=123
|
||||||
|
>>>dv1=bin(hh) #Преобразование в строку с двоичным представлением
|
||||||
|
>>>vos1=oct(hh) # Преобразование в строку с восьмеричным представлением
|
||||||
|
>>>shs1=hex(hh) # Преобразование в строку с шестнадцатеричным представлением
|
||||||
|
>>>dv1
|
||||||
|
'0b1111011'
|
||||||
|
>>>vos1
|
||||||
|
'0o173'
|
||||||
|
>>>shs1
|
||||||
|
'0x7b'
|
||||||
|
>>>int(dv1,2)
|
||||||
|
123
|
||||||
|
>>>int(vos1, 8)
|
||||||
|
123
|
||||||
|
>>>int(shs1, 16)
|
||||||
|
123
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3 Преобразование сложных типов обьектов в другие типы
|
||||||
|
|
||||||
|
## 3.1 Преобразование элементов в строку символов
|
||||||
|
|
||||||
|
В строку были преобразованы число, логическая переменная, список, кортеж и словарь.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>strk1=str(23.6)
|
||||||
|
>>>strk1
|
||||||
|
'23.6'
|
||||||
|
>>>strk2=str(logiz3)
|
||||||
|
>>>strk2
|
||||||
|
'True'
|
||||||
|
>>>strk3=str(["A","B","C"]) #Преобразуем список
|
||||||
|
>>>strk3
|
||||||
|
"['A', 'B', 'C']"
|
||||||
|
>>>strk4=str(("A","B","C")) #Преобразуем кортеж
|
||||||
|
>>>strk4
|
||||||
|
"('A', 'B', 'C')"
|
||||||
|
>>>strk5=str({"A":1,"B":2,"C":9}) #Преобразуем словарь
|
||||||
|
>>>strk5
|
||||||
|
"{'A': 1, 'B': 2, 'C': 9}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.2 Преобразование элементов в список
|
||||||
|
|
||||||
|
Были преобразованы в список строка символов, кортеж и словарь тремя способами (включая только ключи, только значения и ключи и значения вместе).
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>spis1=list("Строка символов") #Заданная строка разделяется на символы
|
||||||
|
>>>spis1
|
||||||
|
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
|
||||||
|
>>>spis2=list((124,236,-15,908)) #Кортеж превращается в список
|
||||||
|
>>>spis2
|
||||||
|
[124, 236, -15, 908]
|
||||||
|
>>>spis3=list({"A":1,"B":2,"C":9}) #Преобразование словаря в список
|
||||||
|
>>>spis3
|
||||||
|
['A', 'B', 'C']
|
||||||
|
>>>spis3=list({"A":1,"B":2,"C":9}.values()) #Преобразование словаря в список по значениям
|
||||||
|
>>>spis3
|
||||||
|
[1, 2, 9]
|
||||||
|
>>>spis3=list({"A":1,"B":2,"C":9}.items()) #Преобразование словаря в список ключи и значения
|
||||||
|
>>>spis3
|
||||||
|
[('A', 1), ('B', 2), ('C', 9)]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.3 Преобразование элементов в кортеж
|
||||||
|
|
||||||
|
В кортеж были преобразованы строка, список и словарь.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>kort7=tuple('Строка символов') #Преобразование строки символов в кортеж
|
||||||
|
>>>kort7
|
||||||
|
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
|
||||||
|
>>>kort8=tuple(spis2) #Преобразование списка в кортеж
|
||||||
|
>>>kort8
|
||||||
|
(124, 236, -15, 908)
|
||||||
|
>>>kort9=tuple({"A":1,"B":2,"C":9}) #Преобразование словаря в кортеж
|
||||||
|
>>>kort9
|
||||||
|
('A', 'B', 'C')
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.4 Удаление обьектов
|
||||||
|
|
||||||
|
Были удалены два обьекта и проверено их наличие. Так же самостоятельно ыла создана спрака, которая была потом преобразована в список, затем список – в кортеж и, кортеж – в строку.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>del strk5, kort8
|
||||||
|
>>>strk5
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#62>", line 1, in <module>
|
||||||
|
strk5
|
||||||
|
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
|
||||||
|
>>>kort8
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#63>", line 1, in <module>
|
||||||
|
kort8
|
||||||
|
NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
|
||||||
|
>>>f_str="Добровольска Е"
|
||||||
|
>>>f_spis=list(f_str)
|
||||||
|
>>>f_kort=tuple(f_spis)
|
||||||
|
>>>f_sstr=str(f_kort)
|
||||||
|
>>>f_spis
|
||||||
|
['Д', 'о', 'б', 'р', 'о', 'в', 'о', 'л', 'ь', 'с', 'к', 'а', ' ', 'Е']
|
||||||
|
>>>f_kort
|
||||||
|
('Д', 'о', 'б', 'р', 'о', 'в', 'о', 'л', 'ь', 'с', 'к', 'а', ' ', 'Е')
|
||||||
|
>>>f_sstr
|
||||||
|
"('Д', 'о', 'б', 'р', 'о', 'в', 'о', 'л', 'ь', 'с', 'к', 'а', ' ', 'Е')"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 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!
|
||||||
|
>>>a
|
||||||
|
3.9555555555555557
|
||||||
|
>>>type(a)
|
||||||
|
<class 'float'>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.4 Изучение деления с округлением вниз
|
||||||
|
|
||||||
|
Был применен операнд деления с округлением вниз, деление испробовано на целых и вещественных числах и выведен тип результативной переменной.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>b=178//45 #Деление двух целых чисел
|
||||||
|
>>>b
|
||||||
|
3
|
||||||
|
>>>type(b)
|
||||||
|
<class 'int'>
|
||||||
|
>>>c=-24.6//12.1 #Деление двух вещественных чисел
|
||||||
|
>>>c
|
||||||
|
-3.0
|
||||||
|
>>>type(c)
|
||||||
|
<class 'float'>
|
||||||
|
>>>ddd=56.88//45
|
||||||
|
>>>ddd
|
||||||
|
1.0
|
||||||
|
>>>type(ddd)
|
||||||
|
<class 'float'>
|
||||||
|
>>>eee=45//56.88
|
||||||
|
>>>eee
|
||||||
|
0.0
|
||||||
|
>>>type(eee)
|
||||||
|
<class 'float'>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.5 Изучение получения отсатка от деления
|
||||||
|
|
||||||
|
Был применен операнд остатка от деления, операция применена по отношению к целым и вещественным числам.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>148%33 #Остаток от деления двух целых чисел
|
||||||
|
16
|
||||||
|
>>>12.6%3.8 #Остаток от деления двух вещественных чисел
|
||||||
|
1.2000000000000002
|
||||||
|
>>>148%3.9
|
||||||
|
3.7000000000000033
|
||||||
|
>>>3.9%2
|
||||||
|
1.9
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.6 Изучение возведения в степень
|
||||||
|
|
||||||
|
Была применена операция возведения в степень с вещественными и целыми числами.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>14**3 #Целое число возводится в целую степень
|
||||||
|
2744
|
||||||
|
>>>e=2.7**3.6 #Вещественное число возводится в вещественную степень
|
||||||
|
>>>e
|
||||||
|
35.719843790663525
|
||||||
|
>>>2.7**3
|
||||||
|
19.683000000000003
|
||||||
|
>>>3**2.7
|
||||||
|
19.419023519771343
|
||||||
|
```
|
||||||
|
|
||||||
|
Также самостоятельно были произведены операции над комплексными числами. Выяснено, что выполнимы все вышеприведенные операции, кроме деления с округлением вниз и определения остатка.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>kom1=5+2j
|
||||||
|
>>>kom2=3+7j
|
||||||
|
>>>kom1+kom2
|
||||||
|
(8+9j)
|
||||||
|
>>>kom1-kom2
|
||||||
|
(2-5j)
|
||||||
|
>>>kom1*kom2
|
||||||
|
(1+41j)
|
||||||
|
>>>kom1/kom2
|
||||||
|
(0.5-0.5000000000000001j)
|
||||||
|
>>>kom1//kom2
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#110>", line 1, in <module>
|
||||||
|
kom1//kom2
|
||||||
|
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
|
||||||
|
>>>kom1//3
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#111>", line 1, in <module>
|
||||||
|
kom1//3
|
||||||
|
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
|
||||||
|
>>>kom1%kom2
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#112>", line 1, in <module>
|
||||||
|
kom1%kom2
|
||||||
|
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
|
||||||
|
>>>kom1%3
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#113>", line 1, in <module>
|
||||||
|
kom1%3
|
||||||
|
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
|
||||||
|
>>>kom1**4
|
||||||
|
(41+840j)
|
||||||
|
>>>kom1**kom2
|
||||||
|
(10.184748623043754+3.841522923031664j)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5 Изучение операций с двоичными представлениями целых чисел
|
||||||
|
|
||||||
|
Были произведены различные операции с двоичным представлением целых чисел.
|
||||||
|
|
||||||
|
## 5.1 Изучение двоичной инверсии
|
||||||
|
|
||||||
|
Была применена двоичная инверсия.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>dv1=9
|
||||||
|
>>>dv2=~dv1
|
||||||
|
>>>dv2
|
||||||
|
-10
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5.2 Изучение двоичного И
|
||||||
|
|
||||||
|
Была применена операция двоичного И.
|
||||||
|
|
||||||
|
```py
|
||||||
|
7&9 # 111 и 1001 = 0001
|
||||||
|
1
|
||||||
|
7&8 # 111 и 1000 = 0000
|
||||||
|
0
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5.3 Изучение двоичного ИЛИ
|
||||||
|
|
||||||
|
Была применена операция двоичного ИЛИ.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>7|9 # 111 или 1001 = 1111
|
||||||
|
15
|
||||||
|
>>>7|8 # 111 или 1000 = 1111
|
||||||
|
15
|
||||||
|
>>>14|5 # 1110 или 0101 = 1111
|
||||||
|
15
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5.4 Изучение двоичного исключающего ИЛИ
|
||||||
|
|
||||||
|
Была применена операция двоичного исключающего ИЛИ.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>14^5 # 1110 исключающее или 0101 = 1011
|
||||||
|
11
|
||||||
|
```
|
||||||
|
|
||||||
|
Число 11 получилось при переводе числа 1011 из двоичной системы в десятичную. Это можно сделать с помощью выражения: 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 8 + 0 + 2 + 1 = 11
|
||||||
|
|
||||||
|
## 5.5 Изучение сдвига двоичного представления на заданное число разрядов влево или вправо с дополнением нулями
|
||||||
|
|
||||||
|
Был произведен сдвиг двоичного представления влево и вправо с дополнением нулями.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>h=14 #Двоичное представление = 1110
|
||||||
|
>>>g=h<<2 # Новое двоичное представление = 111000
|
||||||
|
>>>g
|
||||||
|
56
|
||||||
|
>>>g1=h>>1 # Новое двоичное представление = 0111
|
||||||
|
>>>g1
|
||||||
|
7
|
||||||
|
>>>g2=h>>2 # Новое двоичное представление = 0011
|
||||||
|
>>>g2
|
||||||
|
3
|
||||||
|
```
|
||||||
|
|
||||||
|
Самостоятельно были созданы два двоичных числа с 7-ю знаками и произведены операции над ними.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>bin1 = int("0101010", 2)
|
||||||
|
>>>bin2 = int("1100101", 2)
|
||||||
|
>>>bin3 = ~bin1
|
||||||
|
>>>bin3
|
||||||
|
-43
|
||||||
|
>>>bin1&bin2
|
||||||
|
32
|
||||||
|
>>>bin1|bin2
|
||||||
|
111
|
||||||
|
>>>bin1^bin2
|
||||||
|
79
|
||||||
|
>>>bin1>>3
|
||||||
|
5
|
||||||
|
>>>bin1<<6
|
||||||
|
2688
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6 Изучение операций при работе с последовательностями (строками, списками, кортежами)
|
||||||
|
|
||||||
|
## 6.1 Изучение обьединения обьектов различных типов
|
||||||
|
|
||||||
|
Были обьеденены строки, списки и кортежи.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>'Система '+'регулирования' #Соединение двух строк символов
|
||||||
|
'Система регулирования'
|
||||||
|
>>>['abc','de','fg']+['hi','jkl'] # Объединение двух списков
|
||||||
|
['abc', 'de', 'fg', 'hi', 'jkl']
|
||||||
|
>>>('abc','de','fg')+('hi','jkl') # Объединение двух кортежей
|
||||||
|
('abc', 'de', 'fg', 'hi', 'jkl')
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6.2 Изучение повторения элементов обьекта различных типов
|
||||||
|
|
||||||
|
Было произведено повторение строки, списка и кортежа
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>'ля-'*5 #Повторение строки 5 раз
|
||||||
|
'ля-ля-ля-ля-ля-'
|
||||||
|
>>>['ку','-']*3 #Повторение списка 3 раза
|
||||||
|
['ку', '-', 'ку', '-', 'ку', '-']
|
||||||
|
>>>('кис','-')*4 #Повторение кортежа 4 раза
|
||||||
|
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
|
||||||
|
>>>signal1=[0]*3+[1]*99
|
||||||
|
>>>signal2=(0,)*3+(1,)*5+(0,)*7
|
||||||
|
>>>signal1
|
||||||
|
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||||
|
>>>signal2
|
||||||
|
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6.3 Изучение проверки наличия элементов в обьекте
|
||||||
|
|
||||||
|
Было проверено наличие определенных элементов в строке, списке и кортеже.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>stroka='Система автоматического управления'
|
||||||
|
>>>'автомат' in stroka #Наличие подстроки в строке
|
||||||
|
True
|
||||||
|
>>>'ку' in ['ку','-']*3 #Наличие контекста в списке
|
||||||
|
True
|
||||||
|
>>>'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже
|
||||||
|
False
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6.4 Изучение подстановки элементов в обьект
|
||||||
|
|
||||||
|
Была произведена подстановка чисел и строки в обьект.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>stroka='Температура = %g %s %g'
|
||||||
|
>>>stroka % (16,' меньше ',25)
|
||||||
|
'Температура = 16 меньше 25'
|
||||||
|
>>>stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
|
||||||
|
>>>stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
|
||||||
|
'Температура = 16 меньше 25'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7 Изучение оператора присваивания
|
||||||
|
|
||||||
|
## 7.1 Изучение присваивания для переменной
|
||||||
|
|
||||||
|
Была создана переменная и ей присвоено определенное значение.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>zz=-12
|
||||||
|
>>>zz
|
||||||
|
-12
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7.2 Изучение изменения заданной переменной на определенную величину
|
||||||
|
|
||||||
|
Значение переменной было увеличено и потом уменьшено на определенное значение.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>zz+=5 # Значение zz увеличивается на 5
|
||||||
|
>>>zz-=3 # Значение уменьшается на 3
|
||||||
|
>>>zz
|
||||||
|
-10
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7.3 Изучение умножения и деления переменной
|
||||||
|
|
||||||
|
Переменная была умножена, а потом поделена на определенное значение. Также самостоятельно был применон этот операнд для строки, в последствии чего символы в строке продублировались столько раз, какое было умножаемое число.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>zz/=2
|
||||||
|
>>>zz
|
||||||
|
-5.0
|
||||||
|
>>>zz*=5
|
||||||
|
>>>zz
|
||||||
|
-25.0
|
||||||
|
>>>xxx="zz"
|
||||||
|
>>>xxx*=5
|
||||||
|
>>>xxx
|
||||||
|
'zzzzzzzzzz'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7.4 Изучение деления с округлением вниз, получение остатка деления и возведение в степень
|
||||||
|
|
||||||
|
На переменной были самостоятельно испробованы операции деления с округлением вниз, получение остатка деления и возведение в степень.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>zz//=3
|
||||||
|
>>>zz
|
||||||
|
-9.0
|
||||||
|
>>>zz%=2
|
||||||
|
>>>zz
|
||||||
|
1.0
|
||||||
|
>>>zz**=3
|
||||||
|
>>>zz
|
||||||
|
1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7.5 Изучение множественного присваивания
|
||||||
|
|
||||||
|
Разным переменным было присвоено одно значение. Также были присвоены значения переменным в одну строку с использованием кортежа,
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>w=v=10 # Переменным присваивается одно и то же значение
|
||||||
|
>>>w
|
||||||
|
10
|
||||||
|
>>>v
|
||||||
|
10
|
||||||
|
>>>n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа, строки, списка и словаря.
|
||||||
|
>>>n1;n2;n3
|
||||||
|
11
|
||||||
|
-3
|
||||||
|
'all'
|
||||||
|
>>>n1,n2,n3="11", "-3", "all"
|
||||||
|
>>>n1;n2;n3
|
||||||
|
'11'
|
||||||
|
'-3'
|
||||||
|
'all'
|
||||||
|
>>>n1,n2,n3=[11,-3,'all']
|
||||||
|
>>>n1;n2;n3
|
||||||
|
11
|
||||||
|
-3
|
||||||
|
'all'
|
||||||
|
>>>n1,n2,n3={11: 3,-3:7,'all':8}
|
||||||
|
>>>n1;n2;n3
|
||||||
|
11
|
||||||
|
-3
|
||||||
|
'all'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 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
|
||||||
|
>>>(5>6) and ('kazan' in dic1) and not ('lozhka' in mnoz1)
|
||||||
|
False
|
||||||
|
>>>(5>6) and (7>5) or ("Saratov" in dic1)
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
## 8.4 Изучение проверки ссылок переменных на наличие одного и того же обьекта
|
||||||
|
|
||||||
|
Было проверено, являются ли созданные обьекты одними и теми же обьектами в памяти.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти
|
||||||
|
>>>w is v
|
||||||
|
True
|
||||||
|
>>>w1=['A','B']
|
||||||
|
>>>v1=['A','B']
|
||||||
|
>>>w1 is v1 #В данном случае эти переменные не записаны в один адрес памяти, питон создает для списков два разных обьекта, так как список это изменяемый тип и так как значение для переменных присваивалось по-отдельности. Так питон гарантирует, что изменение одного списка не повлияет на другой.
|
||||||
|
False
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9 Изучение операций с обьектами, проводимыми с помощью методов
|
||||||
|
|
||||||
|
Была создана строка и выведена все методы для нее.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>stroka='Микропроцессорная система управления'
|
||||||
|
>>>dir(stroka)
|
||||||
|
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9.1 Изучение методов применимых для строки
|
||||||
|
|
||||||
|
Были применены разные методы для работы со строками.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>stroka.find('пр') #Возвращает номер позиции первого вхождения указанного контекста или значение -1
|
||||||
|
5
|
||||||
|
>>>stroka.count("с") #Подсчет числа вхождений строки “с” в stroka
|
||||||
|
4
|
||||||
|
>>>stroka.replace(' у',' автоматического у')
|
||||||
|
'Микропроцессорная система автоматического управления'
|
||||||
|
>>>spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель
|
||||||
|
>>>spis22
|
||||||
|
['Микропроцессорная', 'система', 'управления']
|
||||||
|
>>>stroka.upper() #Возвращает строку со всеми заглавными буквами
|
||||||
|
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
|
||||||
|
>>>stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка
|
||||||
|
>>>stroka3
|
||||||
|
'Микропроцессорная система управления'
|
||||||
|
>>>stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева
|
||||||
|
('Микропроце', 'с', 'сорная система управления')
|
||||||
|
>>>stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа
|
||||||
|
('Микропроцессорная си', 'с', 'тема управления')
|
||||||
|
>>>strk1='Момент времени {}, значение = {}'
|
||||||
|
>>>strk1.format(1,89.7)
|
||||||
|
'Момент времени 1, значение = 89.7'
|
||||||
|
>>>strk2='Момент времени {1}, значение = {0}:{2}'
|
||||||
|
>>>strk2.format(36.7,2,'норма!')
|
||||||
|
'Момент времени 2, значение = 36.7:норма!'
|
||||||
|
>>>strk3='Момент времени {num}, значение = {znch}'
|
||||||
|
>>>strk3.format(znch=89.7,num=2)
|
||||||
|
'Момент времени 2, значение = 89.7'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9.2 Изучение методов применимых к спискам
|
||||||
|
|
||||||
|
Были применены разные методы для работы со списками.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>spsk=[4, "a", 5, 7, 9]
|
||||||
|
>>>dir(spsk)
|
||||||
|
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
|
||||||
|
>>>spsk.pop(2)
|
||||||
|
5
|
||||||
|
>>>spsk
|
||||||
|
[4, 'a', 7, 9]
|
||||||
|
>>>spsk.append('c') #К списку прибавляется строка "с"
|
||||||
|
>>>spsk
|
||||||
|
[4, 'a', 7, 9, 'c']
|
||||||
|
>>>spsk.insert(2,'a') #На 2 место в списке вставляется строка "а"
|
||||||
|
>>>spsk
|
||||||
|
[4, 'a', 'a', 7, 9, 'c']
|
||||||
|
>>>spsk.count('a') #Считается количество "а" в списке
|
||||||
|
2
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9.3 Изучение методов применимых к кортежам
|
||||||
|
|
||||||
|
Были применены разные методы для работы с кортажами и применен один из них.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>kor=(2, "k")
|
||||||
|
>>>dir(kor)
|
||||||
|
['__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']
|
||||||
|
>>>kor.index(2)
|
||||||
|
0
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9.4 Изучение методов применимых к словарям
|
||||||
|
|
||||||
|
Были применены разные методы для работы со словарями и применен один из них.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>dirr={"A":3, "B":4}
|
||||||
|
>>>dir(dirr)
|
||||||
|
['__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']
|
||||||
|
>>>dirr.keys()
|
||||||
|
>>>dict_keys(['A', 'B'])
|
||||||
|
```
|
||||||
|
|
||||||
|
## 10 Завершение работы в IDLE
|
||||||
|
|
||||||
|
Был завершен сеанс в среде IDLE.
|
||||||
67
TEMA3/task.md
Обычный файл
@@ -0,0 +1,67 @@
|
|||||||
|
# Общее контрольное задание по теме 3
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
|
||||||
|
• Преобразовать восьмеричное значение 45 в целое число.
|
||||||
|
• Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?
|
||||||
|
• Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.
|
||||||
|
• Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
|
||||||
|
• Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.
|
||||||
|
• Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов.
|
||||||
|
• Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>a = int("45", 8)
|
||||||
|
>>>a
|
||||||
|
37
|
||||||
|
>>>D={"усиление":23, "запаздывание":12, "постоянная времени":78}
|
||||||
|
>>>spis1=list(D)
|
||||||
|
>>>spis1
|
||||||
|
['усиление', 'запаздывание', 'постоянная времени']
|
||||||
|
>>>spis2=list(D.values())
|
||||||
|
>>>spis2
|
||||||
|
[23, 12, 78]
|
||||||
|
>>>kor=tuple(spis1)+tuple(spis2) #Список отличается от кортежа тем, что список изменяем, а кортеж нет.
|
||||||
|
>>>kor
|
||||||
|
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
|
||||||
|
>>>((1768//24.8)%3)**2.4
|
||||||
|
5.278031643091577
|
||||||
|
>>>((~(13&27))^14)<<2
|
||||||
|
-32
|
||||||
|
>>>spis3=["колебат", "колебат", "колебат", "колебат" ]
|
||||||
|
>>>'аткол' in spis3[1] + spis3[2]
|
||||||
|
True
|
||||||
|
>>>dir(D)
|
||||||
|
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
|
||||||
|
>>>help(D.keys)
|
||||||
|
Help on built-in function keys:
|
||||||
|
|
||||||
|
keys() method of builtins.dict instance
|
||||||
|
Return a set-like object providing a view on the dict's keys.
|
||||||
|
|
||||||
|
>>>help(D.values)
|
||||||
|
Help on built-in function values:
|
||||||
|
|
||||||
|
values() method of builtins.dict instance
|
||||||
|
Return an object providing a view on the dict's values.
|
||||||
|
|
||||||
|
>>>D.keys() #Этот метод отображает ключи словаря
|
||||||
|
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
|
||||||
|
>>>D.values() #Этот метод отображает знаечния словаря
|
||||||
|
dict_values([23, 12, 78])
|
||||||
|
>>>S="Создать объект - символьную строку с текстом данного предложения"
|
||||||
|
>>>L=list(S.split())
|
||||||
|
>>>L
|
||||||
|
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||||
|
>>>L[L.index("-")] = ","
|
||||||
|
>>>L
|
||||||
|
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||||
|
>>>L.remove("данного")
|
||||||
|
>>>L
|
||||||
|
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
|
||||||
|
```
|
||||||
59
TEMA3/test.md
Обычный файл
@@ -0,0 +1,59 @@
|
|||||||
|
## Тест по модулю 1 (Вариант 7 )
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
1) Можно ли работать со средой без использования интерактивной оболочки IDLE?
|
||||||
|
|
||||||
|
2) Создайте объект-словарь с 7 элементами: ключи - названия (аббревиатура) вузов, значения - число студентов (задать произвольно). Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
|
||||||
|
|
||||||
|
3) Напишите инструкцию, позволяющую вычислить общее число студентов в двух указываемых вузах из словаря.
|
||||||
|
|
||||||
|
4) Преобразуйте значения из словаря в список и, затем, список - в строку. Отобразите полученные объекты. Получите новый список, разделением строки на части по разделителю: ",".
|
||||||
|
|
||||||
|
5) Используя операцию подстановки, отобразить рассчитанное число студентов в 2-х вузах по шаблону: "Число студентов в <название вуза 1> и <название вуза 2> =:".
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
1) Можно работать со средой без использования оболочкеи IDLE, например используя различные текстовые редакторы (VSC), командную строку (запуская из редактора).
|
||||||
|
|
||||||
|
2)
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>VUZI = {"МЭИ": 789, "МАИ": 654, "МГУ":989, "МГИМО": 342, "ВШЭ": 543, "РУДН": 876, "МИСИС": 56}
|
||||||
|
>>>type(VUZI)
|
||||||
|
<class 'dict'>
|
||||||
|
>>>dir(VUZI)
|
||||||
|
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
|
||||||
|
```
|
||||||
|
3)
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>SUMMA = VUZI["МЭИ"] + VUZI["МАИ"]
|
||||||
|
>>>SUMMA
|
||||||
|
1443
|
||||||
|
```
|
||||||
|
|
||||||
|
4)
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>SPIS = list(VUZI.values())
|
||||||
|
>>>SPIS
|
||||||
|
[789, 654, 989, 342, 543, 876, 56]
|
||||||
|
>>>ST = str(SPIS)
|
||||||
|
>>>ST
|
||||||
|
'[789, 654, 989, 342, 543, 876, 56]'
|
||||||
|
>>>SPIS2 = ST.split(",")
|
||||||
|
>>>SPIS2
|
||||||
|
['[789', ' 654', ' 989', ' 342', ' 543', ' 876', ' 56]']
|
||||||
|
```
|
||||||
|
|
||||||
|
5)
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>strk3 = "Число студентов в %s и %s = %g"
|
||||||
|
>>>strk3 % (list(VUZI.keys())[0], list(VUZI.keys())[1], SUMMA)
|
||||||
|
'Число студентов в МЭИ и МАИ = 1443'
|
||||||
|
```
|
||||||
|
|
||||||
Двоичные данные
TEMA4/Ris1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 34 KiB |
Двоичные данные
TEMA4/Ris2.png
Обычный файл
|
После Ширина: | Высота: | Размер: 41 KiB |
Двоичные данные
TEMA4/Ris3.png
Обычный файл
|
После Ширина: | Высота: | Размер: 28 KiB |
Двоичные данные
TEMA4/Ris4.png
Обычный файл
|
После Ширина: | Высота: | Размер: 26 KiB |
Двоичные данные
TEMA4/Ris5.png
Обычный файл
|
После Ширина: | Высота: | Размер: 34 KiB |
420
TEMA4/report.md
Обычный файл
@@ -0,0 +1,420 @@
|
|||||||
|
# Отчет по теме 4
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## 1 Запуск интерактивной оболочки IDLE
|
||||||
|
|
||||||
|
Была запущена интерактивная оболочка IDLE.
|
||||||
|
|
||||||
|
## 2 Изучение стандартных встроенных функций
|
||||||
|
|
||||||
|
## 2.1 Изучение функции округления
|
||||||
|
|
||||||
|
Была применена функция round с одним и двумя аргументами и изучены различия между указанием одного и двух аргументов.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>round(123.456,1)
|
||||||
|
123.5
|
||||||
|
>>>round(123.456,0)
|
||||||
|
123.0
|
||||||
|
>>>type(round(123.456,1))
|
||||||
|
<class 'float'>
|
||||||
|
>>>type(round(123.456,0)) #В результате получаются числа класса float, так как указано сколько цифр после запятой нужно оставить. Два вышеупомянутых варианта отличаются именно количесивом цифр, оставленных после запятой при округлении.
|
||||||
|
<class 'float'>
|
||||||
|
>>>round(123.456)
|
||||||
|
123
|
||||||
|
>>>type(round(123.456)) #В данном случае получается число типа int, так как не указано количество цифр после запятой, и по умолчанию число округляется до целого.
|
||||||
|
<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) #При указывание одного аргумента строится последовательность от 0 до указанного числа не включительно, с шагом 1.
|
||||||
|
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]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.3 Изучение функции zip
|
||||||
|
|
||||||
|
Была применена функция zip и произведена попытка обращения к элементу созданной последовательности по индексу.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>qq=["Dobrovolska", "Efremov", "Zelenkina", "Pohil"]
|
||||||
|
>>>ff=zip(gg,qq)
|
||||||
|
>>>tuple(ff) #В итоге получится последовательность из 4 элементов, так как в qq 4 элемента, а в gg 6. Длина равна длине самого короткого списка.
|
||||||
|
((76, 'Dobrovolska'), (85, 'Efremov'), (94, 'Zelenkina'), (103, 'Pohil'))
|
||||||
|
>>>ff[1] #Исходя из текста ошибки, можно сказать, что zip обьекты не поддерживают доступ по индексу.
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#15>", line 1, in <module>
|
||||||
|
ff[1]
|
||||||
|
TypeError: 'zip' object is not subscriptable
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.4 Изучение функции eval
|
||||||
|
|
||||||
|
Была применена функция eval.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
|
||||||
|
коэффициент усиления=6
|
||||||
|
>>>dan
|
||||||
|
-126.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.5 Изучение функции exec
|
||||||
|
|
||||||
|
Была применена функция 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)
|
||||||
|
|
||||||
|
Был изучен и применен ряд полезных функций:
|
||||||
|
|
||||||
|
abs - выдает значение по модулю;
|
||||||
|
len - выдает длину обьекта;
|
||||||
|
max - выдает максимальное число из списка введенных в аргумент;
|
||||||
|
min - выдает минимальное число из списка введенных в аргумент;
|
||||||
|
pow - при двух аргументах: возводит первый в степень второго, при наличие третьего аргумента делит получившийся результат на третий аргумент и показывает остаток;
|
||||||
|
sum - суммирует числа;
|
||||||
|
divmod - возвращает кортеж (a // b, a % b), где а и b соответственно первый и второй аргумент;
|
||||||
|
map - применяет функцию из первого аргумента к каждому элементу итерируемого обьекта, который указан во втором аргументе.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>abs(-5)
|
||||||
|
5
|
||||||
|
>>>len("hi")
|
||||||
|
2
|
||||||
|
>>>max(3, 4)
|
||||||
|
4
|
||||||
|
>>>min(3, 4)
|
||||||
|
3
|
||||||
|
>>>pow(3, 2)
|
||||||
|
9
|
||||||
|
>>>pow(3, 2, 3)
|
||||||
|
0
|
||||||
|
>>>sum([2, 3])
|
||||||
|
5
|
||||||
|
>>>divmod(7, 2)
|
||||||
|
(3, 1)
|
||||||
|
>>>list(map(lambda x: x*2, [1, 2, 3, 4]))
|
||||||
|
[2, 4, 6, 8]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3 Изучение функций из модуля math для работы с математическими выражениями и операциями.
|
||||||
|
|
||||||
|
Был импортирован и изучен модуль math. Были изучены и применены некоторые функции из модуля math.
|
||||||
|
|
||||||
|
sin - считает и выдает синус аргумента в радианах;
|
||||||
|
acos - считает и выдает арккосинус аргумента в радианах;
|
||||||
|
degrees - переводит число в радианах в градусы;
|
||||||
|
radians - переводит число в градусах в радианы;
|
||||||
|
exp - выдает значение числа e возведенного в степень, которая указана в аргументе;
|
||||||
|
log - считает натуральный логарифм числа;
|
||||||
|
log10 - считает делятичный логарифм числа;
|
||||||
|
sqrt - считает корень из числа в аргументе;
|
||||||
|
ceil - округляет число вверх;
|
||||||
|
floor - округляет число вниз;
|
||||||
|
pi - данная функция является представлением числа пи в питоне.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import math
|
||||||
|
>>>dir(math)
|
||||||
|
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fma', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
|
||||||
|
>>>help(math.factorial)
|
||||||
|
Help on built-in function factorial in module math:
|
||||||
|
|
||||||
|
factorial(n, /)
|
||||||
|
Find n!.
|
||||||
|
|
||||||
|
>>>math.factorial(5)
|
||||||
|
120
|
||||||
|
>>>math.sin(180)
|
||||||
|
-0.8011526357338304
|
||||||
|
>>>math.acos(0.5)
|
||||||
|
1.0471975511965979
|
||||||
|
>>>help(math.degrees)
|
||||||
|
Help on built-in function degrees in module math:
|
||||||
|
|
||||||
|
degrees(x, /)
|
||||||
|
Convert angle x from radians to degrees.
|
||||||
|
|
||||||
|
>>>math.degrees(0.5)
|
||||||
|
28.64788975654116
|
||||||
|
>>>math.radians(28)
|
||||||
|
0.4886921905584123
|
||||||
|
>>>math.exp(1)
|
||||||
|
2.718281828459045
|
||||||
|
>>>math.log(1)
|
||||||
|
0.0
|
||||||
|
>>>math.log10(1)
|
||||||
|
0.0
|
||||||
|
>>>math.sqrt(9)
|
||||||
|
3.0
|
||||||
|
>>>help(math.ceil)
|
||||||
|
Help on built-in function ceil in module math:
|
||||||
|
|
||||||
|
ceil(x, /)
|
||||||
|
Return the ceiling of x as an Integral.
|
||||||
|
|
||||||
|
This is the smallest integer >= x.
|
||||||
|
|
||||||
|
>>>math.ceil(4.7)
|
||||||
|
5
|
||||||
|
>>>math.floor(4.7)
|
||||||
|
4
|
||||||
|
>>>math.pi
|
||||||
|
3.141592653589793
|
||||||
|
>>>math.sin(2*math.pi/7+math.exp(0.23))
|
||||||
|
0.8334902641414562
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4 Изучение модуля cmath для работы с комплексными числами
|
||||||
|
|
||||||
|
Был импортирован и изучен модуль cmath и применены функции для извлечения корня и расчета фазы комплексного числа.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import cmath
|
||||||
|
>>>dir(cmath)
|
||||||
|
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
|
||||||
|
>>>cmath.sqrt(1.2-0.5j)
|
||||||
|
(1.118033988749895-0.22360679774997896j)
|
||||||
|
>>>cmath.phase(1-0.5j)
|
||||||
|
-0.4636476090008061
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5 Изучения стандартного модуля randon для работы с псевдослучайными числами
|
||||||
|
|
||||||
|
Были самостоятельно изучены и применены методы модуля random:
|
||||||
|
|
||||||
|
random - равномерно распределенное случайное число;
|
||||||
|
uniform- равномерно распределенное случайное число в диапазоне, заданном двумя аргументами;
|
||||||
|
randint - случайные целые числа в диапазоне от значения первого аргумента до значения второго;
|
||||||
|
gauss - нормально распределенное случайное число с средним равным певому аргументу и стандартным отклонением равным второму аргументу;
|
||||||
|
choice - случайный выбор из совокупности указанной в аргументе;
|
||||||
|
shuffle - случайная перестановка элементов списка в аргументе;
|
||||||
|
sample - случайный выбор подмножества элементов из списка в первом аргументе (количество элементов равно числу, указанному во втором аргументе);
|
||||||
|
betavariate - случайное число с бета-распределением, где альфа равна первому аргументу, а бета равна второму аргументу;
|
||||||
|
gammavariate - случайное число с гамма-распределением, где альфа равна первому аргументу, а бета равна второму аргументу.
|
||||||
|
|
||||||
|
Также был самостоятельно создан список с 4 случайными значениями, подчиняющимися, соответственно, равномерному, нормальному, бета и гамма – распределениям и с любыми допустимыми значениями параметров этих распределений.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import random
|
||||||
|
>>>dir(random)
|
||||||
|
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_fabs', '_floor', '_index', '_inst', '_isfinite', '_lgamma', '_log', '_log2', '_os', '_parse_args', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', 'betavariate', 'binomialvariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'main', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
|
||||||
|
>>>help(random.seed)
|
||||||
|
Help on method seed in module random:
|
||||||
|
|
||||||
|
seed(a=None, version=2) method of random.Random instance
|
||||||
|
Initialize internal state from a seed.
|
||||||
|
|
||||||
|
The only supported seed types are None, int, float,
|
||||||
|
str, bytes, and bytearray.
|
||||||
|
|
||||||
|
None or no argument seeds from current time or from an operating
|
||||||
|
system specific randomness source if available.
|
||||||
|
|
||||||
|
If *a* is an int, all bits are used.
|
||||||
|
|
||||||
|
For version 2 (the default), all of the bits are used if *a* is a str,
|
||||||
|
bytes, or bytearray. For version 1 (provided for reproducing random
|
||||||
|
sequences from older versions of Python), the algorithm for str and
|
||||||
|
bytes generates a narrower range of seeds.
|
||||||
|
|
||||||
|
>>>random.seed()
|
||||||
|
>>>r = random.random()
|
||||||
|
>>>r
|
||||||
|
0.915829800247012
|
||||||
|
>>>u = random.uniform(1, 10)
|
||||||
|
>>>u
|
||||||
|
6.398971726523061
|
||||||
|
>>>rnd = random.randint(1, 10)
|
||||||
|
>>>rnd
|
||||||
|
3
|
||||||
|
>>>g = random.gauss(0, 1)
|
||||||
|
>>>g
|
||||||
|
1.6312864971445826
|
||||||
|
>>>l = ["a", "b", "c"]
|
||||||
|
>>>ch = random.choice(l)
|
||||||
|
>>>ch
|
||||||
|
'b'
|
||||||
|
>>>random.shuffle(l)
|
||||||
|
>>>l
|
||||||
|
['b', 'a', 'c']
|
||||||
|
>>>s = random.sample(l, 2)
|
||||||
|
>>>s
|
||||||
|
['c', 'b']
|
||||||
|
>>>b = random.betavariate(2, 5)
|
||||||
|
>>>b
|
||||||
|
0.20276652629326136
|
||||||
|
>>>g = random.gammavariate(2, 2)
|
||||||
|
>>>g
|
||||||
|
4.361266204290336
|
||||||
|
>>>random_list = [random.uniform(1, 10), random.gauss(5, 2), random.betavariate(2, 5), random.gammavariate(2, 2)]
|
||||||
|
>>>random_list
|
||||||
|
[1.8429009082320071, 5.582736307655225, 0.21284691290111155, 2.9271296316078654]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6 Изучение модуля time для работы со временем и календарями
|
||||||
|
|
||||||
|
Были изучены и применены методы из модуля time:
|
||||||
|
|
||||||
|
time - возвращает время в секундах, прошедшее с начала эпохи, за которое обычно принимается 1.01.1970г;
|
||||||
|
gmtime - возвращает объект класса struct_time, содержащий полную информацию о текущем времени (UTC): год (tm_year), месяц (tm_mon), день tm_mday)...;
|
||||||
|
localtime - для получения «местного» времени (которое стоит на компьютере);
|
||||||
|
asctime - преобразовывает представление времени из кортежа в строку (просто отображает время в формате строки);
|
||||||
|
ctime - преобразовывает время в секундах, прошедшего с начала эпохи, в строку;
|
||||||
|
sleep - прерывает работу программы на заданное время в секундах;
|
||||||
|
mktime - преобразовает время из типа кортежа или struct_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
|
||||||
|
1757585123.0268378
|
||||||
|
>>>c1=time.time() #Для проверки заново применили функцию спустя 14 секунд.
|
||||||
|
>>>c1
|
||||||
|
1757585137.4425445
|
||||||
|
>>>c2=time.time()-c1
|
||||||
|
>>>c2
|
||||||
|
272.143741607666
|
||||||
|
>>>dat=time.gmtime()
|
||||||
|
>>>dat
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=11, tm_hour=10, tm_min=13, tm_sec=29, tm_wday=3, tm_yday=254, tm_isdst=0)
|
||||||
|
>>>dat.tm_mon
|
||||||
|
9
|
||||||
|
>>>tim=time.localtime()
|
||||||
|
>>>tim
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=11, tm_hour=12, tm_min=15, tm_sec=7, tm_wday=3, tm_yday=254, tm_isdst=0)
|
||||||
|
>>>time.asctime()
|
||||||
|
'Thu Sep 11 12:16:36 2025'
|
||||||
|
>>>time.ctime()
|
||||||
|
'Thu Sep 11 12:16:57 2025'
|
||||||
|
>>>time.sleep(2) #Две секунды в IDLE не появлялось приглашение для ввода команды.
|
||||||
|
>>>time.mktime(tim)
|
||||||
|
1757585707.0
|
||||||
|
>>>time.localtime(c1)
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=11, tm_hour=12, tm_min=5, tm_sec=37, tm_wday=3, tm_yday=254, tm_isdst=0)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7 Изучение графических функций
|
||||||
|
|
||||||
|
Был создан линейный график, на котором изображена зависимость сигналов от времени.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import pylab
|
||||||
|
>>>x=list(range(-3,55,4))
|
||||||
|
>>>x
|
||||||
|
[-3, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53]
|
||||||
|
>>>t=list(range(15))
|
||||||
|
>>>t
|
||||||
|
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
|
||||||
|
>>>pylab.plot(t,x) #Создание графика в оперативной памяти
|
||||||
|
[<matplotlib.lines.Line2D object at 0x0000022B3EEDAD50>]
|
||||||
|
>>>pylab.title('Первый график')
|
||||||
|
Text(0.5, 1.0, 'Первый график')
|
||||||
|
>>>pylab.xlabel('время')
|
||||||
|
Text(0.5, 0, 'время')
|
||||||
|
>>>pylab.ylabel('сигнал')
|
||||||
|
Text(0, 0.5, 'сигнал')
|
||||||
|
>>>pylab.show() #Отображение графика на экране
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Далее были созданы два линейных графика на одном поле. (По оси y - значения из списка, по оси х - порядковый номер значений).
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>X1=[12,6,8,10,7]
|
||||||
|
>>>X2=[5,7,9,11,13]
|
||||||
|
>>>pylab.plot(X1)
|
||||||
|
[<matplotlib.lines.Line2D object at 0x0000022B3EFEB890>]
|
||||||
|
>>>pylab.plot(X2)
|
||||||
|
[<matplotlib.lines.Line2D object at 0x0000022B3EFEB9D0>]
|
||||||
|
>>>pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Также была создана круговая диаграмма.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>region=['Центр','Урал','Сибирь','Юг'] #Метки для диаграммы
|
||||||
|
>>>naselen=[65,12,23,17] # Значения для диаграммы
|
||||||
|
>>>pylab.pie(naselen,labels=region) #Создание диаграммы в памяти
|
||||||
|
([<matplotlib.patches.Wedge object at 0x0000022B3EEAE3C0>, <matplotlib.patches.Wedge object at 0x0000022B42875590>, <matplotlib.patches.Wedge object at 0x0000022B42875950>, <matplotlib.patches.Wedge object at 0x0000022B42875BD0>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
|
||||||
|
>>>pylab.show() #Отображение диаграммы
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Самостоятельно была создана гистограмма (по оси у - частота повторения значений, по оси х сами значения)
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>data = [1, 2, 3, 3, 2, 3, 3, 3, 2]
|
||||||
|
>>>pylab.hist(data, bins=3)
|
||||||
|
(array([1., 3., 5.]), array([1. , 1.66666667, 2.33333333, 3. ]), <BarContainer object of 3 artists>)
|
||||||
|
>>>pylab.title("Гистограмма")
|
||||||
|
Text(0.5, 1.0, 'Гистограмма')
|
||||||
|
>>>pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Самостоятельно была создана столбиковая диаграмма, где по оси х - категории, а по оси у - значения, относящиеся к каждой категории.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>c = ['A', 'B', 'C', 'D']
|
||||||
|
>>>v = [25, 40, 30, 50]
|
||||||
|
>>>pylab.bar(c, v)
|
||||||
|
<BarContainer object of 4 artists>
|
||||||
|
>>>pylab.title("Столбиковая диаграмма")
|
||||||
|
Text(0.5, 1.0, 'Столбиковая диаграмма')
|
||||||
|
>>>pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 8 Изучение модуля statistics для работы в сфере статистики
|
||||||
|
|
||||||
|
Самостоятельно был импортирован и изучен модуль statistics. Из него были использованы функции подсчета среднего значения, медианы и моды для выборки в списке.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import statistics
|
||||||
|
>>>dir(statistics)
|
||||||
|
['Counter', 'Decimal', 'Fraction', 'LinearRegression', 'NormalDist', 'StatisticsError', '_SQRT2', '__all__', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_decimal_sqrt_of_frac', '_exact_ratio', '_fail_neg', '_float_sqrt_of_frac', '_integer_sqrt_of_frac_rto', '_isfinite', '_kernel_invcdfs', '_mean_stdev', '_newton_raphson', '_normal_dist_inv_cdf', '_quartic_invcdf', '_quartic_invcdf_estimate', '_random', '_rank', '_sqrt_bit_width', '_sqrtprod', '_ss', '_sum', '_triweight_invcdf', '_triweight_invcdf_estimate', 'acos', 'asin', 'atan', 'bisect_left', 'bisect_right', 'correlation', 'cos', 'cosh', 'count', 'covariance', 'defaultdict', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'isfinite', 'isinf', 'itemgetter', 'kde', 'kde_random', 'linear_regression', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'multimode', 'namedtuple', 'numbers', 'pi', 'pstdev', 'pvariance', 'quantiles', 'random', 'reduce', 'repeat', 'sin', 'sqrt', 'stdev', 'sumprod', 'sys', 'tan', 'tau', 'variance']
|
||||||
|
>>>data = [1, 2, 2, 3, 4, 5, 5, 5, 6]
|
||||||
|
>>>mean = statistics.mean(data)
|
||||||
|
>>>mean
|
||||||
|
3.6666666666666665
|
||||||
|
>>>median = statistics.median(data)
|
||||||
|
>>>median
|
||||||
|
4
|
||||||
|
>>>mode = statistics.mode(data)
|
||||||
|
>>>mode
|
||||||
|
5
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9 Завершение работы в IDLE
|
||||||
|
|
||||||
|
Был завершен сеанс в среде IDLE.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
43
TEMA4/task.md
Обычный файл
@@ -0,0 +1,43 @@
|
|||||||
|
# Общее контрольное задание по теме 4
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
|
||||||
|
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
|
||||||
|
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
|
||||||
|
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
|
||||||
|
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
|
||||||
|
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
|
||||||
|
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
import math
|
||||||
|
>>>divmod((round(cmath.phase(0.2+0.8j), 2))*20, 3)
|
||||||
|
(8.0, 2.6000000000000014)
|
||||||
|
>>>divmod(math.floor((round(cmath.phase(0.2+0.8j), 2))*20), 3) #Для получения остатка в целом виде и делении целых чисел, можно использовать такое выражение.
|
||||||
|
(8, 2)
|
||||||
|
>>>p2 = time.gmtime(time.time() + 3 * 3600)
|
||||||
|
>>>p2
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=20, tm_hour=10, tm_min=29, tm_sec=40, tm_wday=0, tm_yday=293, tm_isdst=0)
|
||||||
|
>>>st = p2.tm_hour, p2.tm_min
|
||||||
|
>>>st = str(v.tm_hour)+" hour "+str(v.tm_min)+" min "
|
||||||
|
>>>st
|
||||||
|
'14 hour 3 min '
|
||||||
|
>>>ned = ["пн", "вт", "ср", "чт", "пт", "сб", "вскр"]
|
||||||
|
>>>random.sample(ned, 3)
|
||||||
|
['пн', 'вскр', 'вт']
|
||||||
|
>>>random.choice(list(range(14, 33, 3)))
|
||||||
|
20
|
||||||
|
>>>N = round(random.gauss(15, 4))
|
||||||
|
>>>N
|
||||||
|
15
|
||||||
|
>>>import string #Импортировали модуль в котором есть латинский алфавит, чтобы из него выбрать буквы. Без использования этого модуля создавать список с алфавитом нужно было бы вручную.
|
||||||
|
>>>random.sample(string.ascii_letters, N)
|
||||||
|
['M', 'J', 'X', 'H', 'R', 'D', 'V', 'U', 'c', 'g', 'l', 'k', 'm', 't', 'w']
|
||||||
|
>>>p3 = time.gmtime(time.time() + 3 * 3600);math.floor(((p3.tm_hour*3600+p3.tm_min*60+p3.tm_sec)-(p2.tm_hour*3600+p2.tm_min*60+p2.tm_sec))/60)
|
||||||
|
2
|
||||||
|
```
|
||||||
25
TEMA4/test.md
Обычный файл
@@ -0,0 +1,25 @@
|
|||||||
|
# Индивидуальное контрольное задание по теме 4
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Задание вариант 10
|
||||||
|
|
||||||
|
Создайте кортеж с 5 значениями – случайными числами с равномерным законом распределения в интервале от 7.6 до 8.3. Создайте список со значениями, равными натуральным логарифмам от значений соответствующих элементов кортежа. Зафиксируйте текущее Московское время и отобразите его в виде строки «В Москве сейчас <значение> часов и <значение> минут».
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import random
|
||||||
|
>>> kor = (random.uniform(7.6, 8.3), random.uniform(7.6, 8.3), random.uniform(7.6, 8.3), random.uniform(7.6, 8.3), random.uniform(7.6, 8.3))
|
||||||
|
>>> kor
|
||||||
|
(8.26600277608432, 8.258247431878987, 8.207110592555303, 7.859621657350696, 7.86320586984952)
|
||||||
|
>>> import math
|
||||||
|
>>> List = list(map(math.log, kor))
|
||||||
|
>>> List
|
||||||
|
[2.1121510519332203, 2.111212389703206, 2.1050009239503855, 2.061738470085467, 2.0621943947662804]
|
||||||
|
>>> p2 = time.gmtime(time.time() + 3 * 3600)
|
||||||
|
>>> p2
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=20, tm_hour=11, tm_min=7, tm_sec=2, tm_wday=0, tm_yday=293, tm_isdst=0)
|
||||||
|
>>> print("В москве сейчас ", p2.tm_hour, "часов и ", p2.tm_min, "минут")
|
||||||
|
В москве сейчас 11 часов и 7 минут
|
||||||
|
```
|
||||||
0
TEMA4/zapis1.txt
Обычный файл
Двоичные данные
TEMA5/pic0.png
Обычный файл
|
После Ширина: | Высота: | Размер: 87 KiB |
Двоичные данные
TEMA5/pic1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 28 KiB |
350
TEMA5/report.md
Обычный файл
@@ -0,0 +1,350 @@
|
|||||||
|
# Отчет по теме 5
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## 1 Запуск интерактивной оболочки IDLE
|
||||||
|
|
||||||
|
Была запущена интерактивная оболочка IDLE.
|
||||||
|
|
||||||
|
## 2 Изучение блока ЕСЛИ
|
||||||
|
|
||||||
|
Были изучены и применены различные конструкции блоков с использованием условия if. Рассмотрены также elif и else. Изучены блоки условий, записываемые в одну строку.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>porog = 35
|
||||||
|
>>>rashod1 = 21
|
||||||
|
>>>rashod2 = 15
|
||||||
|
>>>if rashod1>=porog:
|
||||||
|
dohod=12
|
||||||
|
elif rashod2==porog:
|
||||||
|
dohod=0
|
||||||
|
else:
|
||||||
|
dohod=-8
|
||||||
|
|
||||||
|
|
||||||
|
>>>dohod
|
||||||
|
-8
|
||||||
|
>>>if rashod1>=3 and rashod2==4:
|
||||||
|
dohod=rashod1
|
||||||
|
if rashod2==porog or rashod1<rashod2:
|
||||||
|
dohod=porog
|
||||||
|
|
||||||
|
|
||||||
|
>>>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
|
||||||
|
6
|
||||||
|
>>>rashod2
|
||||||
|
0
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3 Изучение блока ДЛЯ
|
||||||
|
|
||||||
|
Был изучен и применен блок for, разобрана простая конструкция и несколько сложных.
|
||||||
|
|
||||||
|
## 3.1 Изучение простого цикла for
|
||||||
|
|
||||||
|
Был применен простой цикл for, который перебирает числа из сгенерированной последовательности и каждый раз увеличивает заданное значение на это число.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>temperatura=5
|
||||||
|
>>>for i in range(3,18,3):
|
||||||
|
temperatura+=i
|
||||||
|
|
||||||
|
|
||||||
|
>>>temperatura
|
||||||
|
50
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.2 Изучение первого сложного цикла for
|
||||||
|
|
||||||
|
Был применен цикл for, который приписывает к списку первый его элемент каждую итерацию, до тех пор, пока длина списка не будет равна или больше 10. Испробованы два способа передачи списка - как изменяемый список и как неизменяемую копию.
|
||||||
|
|
||||||
|
```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]) #В этом варианте список итерируется по копии, то есть исходному списку, чья длина всегда равна 4. Цикл выполняется 4 раза, так как список имеет 4 элемента.
|
||||||
|
else:break
|
||||||
|
|
||||||
|
|
||||||
|
>>>sps
|
||||||
|
[2, 15, 14, 8, 2, 2, 2, 2]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.3 Изучение второго сложного цикла for
|
||||||
|
|
||||||
|
Был приненен цикл for, в котором при каждой итерации для i от 0 до 9, созданный пустой список пополняется значением от 0 до 97 и подсчитывается сумма чисел в списке. При достижении суммы числа более 500, итерация прерывается. Если же итерации успевают закончиться естественным образом и сумма получается значением менее 500, по сумма печатается на экран.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import random as rn
|
||||||
|
>>>sps5=[]
|
||||||
|
>>>for i in range(10):
|
||||||
|
sps5.append(rn.randint(1,97))
|
||||||
|
ss=sum(sps5)
|
||||||
|
if ss>500: break
|
||||||
|
else:
|
||||||
|
print(ss)
|
||||||
|
|
||||||
|
|
||||||
|
374
|
||||||
|
>>>ss=0
|
||||||
|
>>>sps5=[]
|
||||||
|
>>>for i in range(10):
|
||||||
|
sps5.append(rn.randint(1,97))
|
||||||
|
ss=sum(sps5)
|
||||||
|
if ss>500: break
|
||||||
|
else:
|
||||||
|
print(ss)
|
||||||
|
|
||||||
|
|
||||||
|
426
|
||||||
|
>>>ss=0
|
||||||
|
>>>sps5=[]
|
||||||
|
>>>for i in range(10):
|
||||||
|
sps5.append(rn.randint(1,97))
|
||||||
|
ss=sum(sps5)
|
||||||
|
if ss>500: break
|
||||||
|
else:
|
||||||
|
print(ss)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.4 Изучение цикла с символьной строкой
|
||||||
|
|
||||||
|
Был применен цикл, который перебирает каждый символ из stroka и дополняет им ранее созданную пустую строку stroka1.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>stroka='Это – автоматизированная система'
|
||||||
|
>>>stroka1=""
|
||||||
|
>>>for ss in stroka:
|
||||||
|
stroka1+=" "+ss
|
||||||
|
|
||||||
|
|
||||||
|
>>>stroka1
|
||||||
|
' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а'
|
||||||
|
>>>ss
|
||||||
|
'а'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.5 Изучение записи цикла в строке
|
||||||
|
|
||||||
|
Был использован цикл для создания сигналов (цикл создает список из чисел, выжесленных по определенному выражению, в которое входит i, изменяемое в ходе итераций от 0 до 99). А также построоен график отображения сигналов.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import math
|
||||||
|
>>>sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
|
||||||
|
>>>import pylab
|
||||||
|
>>>pylab.plot(range(100), sps2)
|
||||||
|
[<matplotlib.lines.Line2D object at 0x000002B75BB1E990>]
|
||||||
|
>>>pylab.title("Сигналы")
|
||||||
|
Text(0.5, 1.0, 'Сигналы')
|
||||||
|
>>>pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 4 Изучение цикла ПОКА
|
||||||
|
|
||||||
|
Были изучены и применены различные варианты циклов с использованием блоков while.
|
||||||
|
|
||||||
|
## 4.1 Изучение цикла while со счетчиком
|
||||||
|
|
||||||
|
Был применен цикл while, который уменьшает значение rashod на 50 единиц. Здесь rashod = True до тех пор пока его значение положительное. Когда rashod становится равным 0, цикл прерывается. На каждой итерации печатается значение rashod.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>rashod=300
|
||||||
|
>>>while rashod:
|
||||||
|
print("Расход=",rashod)
|
||||||
|
rashod-=50
|
||||||
|
|
||||||
|
|
||||||
|
Расход= 300
|
||||||
|
Расход= 250
|
||||||
|
Расход= 200
|
||||||
|
Расход= 150
|
||||||
|
Расход= 100
|
||||||
|
Расход= 50
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.2 Изучение цикла while с символьной строкой
|
||||||
|
|
||||||
|
Был применен цикл while, который для каждой i, что изменяется от 0 до длины строки stroka, вычисляет значение r, используя выражение, в которое входит i, и формирует из этих значений список. Далее по значениям из списка был построен график.
|
||||||
|
|
||||||
|
```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
|
||||||
|
>>>pylab.plot(range(len(stroka)), sps2)
|
||||||
|
|
||||||
|
[<matplotlib.lines.Line2D object at 0x000002B75F66FC50>]
|
||||||
|
>>>pylab.title("процесс регульрования")
|
||||||
|
>>>pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 4.3 Изучения блока while для проверки числа на свойство простого числа
|
||||||
|
|
||||||
|
Был применен цикл while, который проверяет остаток от деления заданного числа, на все числа начиная от половины собственного значения до 2, при этом если хоть раз этот остаток равен 0, то выводится надпись о том, что число имеет множитель и цикл прерывается. Если же остаток никогда не равен 0, то цикл выполняется до тех пор, пока делитель не будет равен единице и после этого будет выведена надпись, что число является простым.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>chislo=267 #Проверяемое число
|
||||||
|
>>>kandidat =chislo // 2 # Для значений chislo > 1
|
||||||
|
>>>while kandidat > 1:
|
||||||
|
if chislo%kandidat == 0: # Остаток от деления
|
||||||
|
print(chislo, ' имеет множитель ', kandidat)
|
||||||
|
break # else выполняться не будет
|
||||||
|
kandidat -= 1
|
||||||
|
else: # При завершении цикла без break
|
||||||
|
print(chislo, ' является простым!')
|
||||||
|
|
||||||
|
|
||||||
|
267 имеет множитель 89
|
||||||
|
```
|
||||||
|
|
||||||
|
Также предыдущий код был изменен таким образом, что был добавлен цикл for, который еще перебирает числа от 250 до 300 включительно и выполняет вышеописанные операции с каждым числом.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>for chislo in range(250, 301): # Проходим по диапазону чисел
|
||||||
|
kandidat = chislo // 2 # Для значений chislo > 1
|
||||||
|
while kandidat > 1:
|
||||||
|
if chislo % kandidat == 0: # Остаток от деления
|
||||||
|
print(chislo, ' имеет множитель ', kandidat)
|
||||||
|
break # else выполняться не будет
|
||||||
|
kandidat -= 1
|
||||||
|
else: # При завершении цикла while без break
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5 Завершение работы в IDLE
|
||||||
|
|
||||||
|
Был завершен сеанс в среде IDLE.
|
||||||
|
|
||||||
|
|
||||||
82
TEMA5/task.md
Обычный файл
@@ -0,0 +1,82 @@
|
|||||||
|
# Общее контрольное задание по теме 5
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач:
|
||||||
|
• Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите.
|
||||||
|
• Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).
|
||||||
|
• Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import string
|
||||||
|
>>>text = "hello my friend"
|
||||||
|
>>>for char in text:
|
||||||
|
if char in string.ascii_lowercase:
|
||||||
|
order = string.ascii_lowercase.index(char) + 1
|
||||||
|
print(char, "=", order)
|
||||||
|
else:
|
||||||
|
print("это не буква")
|
||||||
|
|
||||||
|
|
||||||
|
h = 8
|
||||||
|
e = 5
|
||||||
|
l = 12
|
||||||
|
l = 12
|
||||||
|
o = 15
|
||||||
|
это не буква
|
||||||
|
m = 13
|
||||||
|
y = 25
|
||||||
|
это не буква
|
||||||
|
f = 6
|
||||||
|
r = 18
|
||||||
|
i = 9
|
||||||
|
e = 5
|
||||||
|
n = 14
|
||||||
|
d = 4
|
||||||
|
>>>Str = "Создайте список со словами из задания данного пункта"
|
||||||
|
>>>L=list(Str.split())
|
||||||
|
>>>L
|
||||||
|
['Создайте', 'список', 'со', 'словами', 'из', 'задания', 'данного', 'пункта']
|
||||||
|
>>>slovo = 'список'
|
||||||
|
>>>if slovo in L:
|
||||||
|
print("Это слово есть в тексте")
|
||||||
|
else: print("Этого слова нет в тексте")
|
||||||
|
|
||||||
|
Это слово есть в тексте
|
||||||
|
>>>slovo = "Привет"
|
||||||
|
>>>if slovo in L:
|
||||||
|
print("Это слово есть в тексте")
|
||||||
|
else: print("Этого слова нет в тексте")
|
||||||
|
|
||||||
|
Этого слова нет в тексте
|
||||||
|
>>>students = ["Dobrovolska", "Efremov", "Zelenkina", "Pohil"]
|
||||||
|
>>>leto = [4, 5, 3, 5]
|
||||||
|
>>>students2 = ["Efremov", "Pohil", "Zelenkina", "Dobrovolska"]
|
||||||
|
>>>zima = [5, 3, 3, 5]
|
||||||
|
>>>name=input("Введите фамилию студента: ")
|
||||||
|
Введите фамилию студента: Dobrovolska
|
||||||
|
>>>if name in students and name in students2:
|
||||||
|
leto_grade = leto[students.index(name)]
|
||||||
|
zima_grade = zima[students2.index(name)]
|
||||||
|
print("Студент:", name, ". Летняя:", leto_grade, ", Зимняя:", zima_grade)
|
||||||
|
else:
|
||||||
|
print("Студент", name, "не найден.")
|
||||||
|
|
||||||
|
|
||||||
|
Студент: Dobrovolska . Летняя: 4 , Зимняя: 5
|
||||||
|
>>>name=input("Введите фамилию студента: ")
|
||||||
|
Введите фамилию студента: ghgghg
|
||||||
|
>>>if name in students and name in students2:
|
||||||
|
leto_grade = leto[students.index(name)]
|
||||||
|
zima_grade = zima[students2.index(name)]
|
||||||
|
print("Студент:", name, ". Летняя:", leto_grade, ", Зимняя:", zima_grade)
|
||||||
|
else:
|
||||||
|
print("Студент", name, "не найден.")
|
||||||
|
|
||||||
|
|
||||||
|
Студент ghgghg не найден.
|
||||||
|
```
|
||||||
44
TEMA5/test/test.md
Обычный файл
@@ -0,0 +1,44 @@
|
|||||||
|
## Индивидуальное контрольное адание по теме 5
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
Вариант 15
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Запросите у пользователя и введите его фамилию в виде символьной строки. Если фамилия пользователя короче 15 символов, дополните ее справа соответствующим числом пробелов. Если она длиннее 15 символов, укоротите ее до первых 15 символов. Отобразите результат на экране с заголовком «Пользователь: ».
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> fam = input("Введите фамилию: ")
|
||||||
|
Введите фамилию: Dobr
|
||||||
|
>>> if len(fam) < 15:
|
||||||
|
... for _ in range(15 - len(fam)):
|
||||||
|
... fam = fam + " "
|
||||||
|
... elif len(fam) > 15:
|
||||||
|
... fam = fam[:15]
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> print("Пользователь: ", fam)
|
||||||
|
Пользователь: Dobr
|
||||||
|
>>> fam = input("Введите фамилию: ")
|
||||||
|
Введите фамилию: Dobrrrrrrrrrrrrlll
|
||||||
|
>>> if len(fam) < 15:
|
||||||
|
... for _ in range(15 - len(fam)):
|
||||||
|
... fam = fam + " "
|
||||||
|
... elif len(fam) > 15:
|
||||||
|
... fam = fam[:15]
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> print("Пользователь: ", fam)
|
||||||
|
Пользователь: Dobrrrrrrrrrrrr
|
||||||
|
>>> fam = input("Введите фамилию: ")
|
||||||
|
Введите фамилию: Dobrrrrrrrrrr15
|
||||||
|
>>> if len(fam) < 15:
|
||||||
|
... for _ in range(15 - len(fam)):
|
||||||
|
... fam = fam + " "
|
||||||
|
... elif len(fam) > 15:
|
||||||
|
... fam = fam[:15]
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> print("Пользователь: ", fam)
|
||||||
|
Пользователь: Dobrrrrrrrrrr15
|
||||||
0
TEMA6/OPLATA.DBF.txt
Обычный файл
1
TEMA6/Stroka.txt
Обычный файл
@@ -0,0 +1 @@
|
|||||||
|
запись строки в файл
|
||||||
Двоичные данные
TEMA6/bin.mnz
Обычный файл
3
TEMA6/cities.txt
Обычный файл
@@ -0,0 +1,3 @@
|
|||||||
|
Мск Кзн
|
||||||
|
Псков Ленинград
|
||||||
|
Сталинград
|
||||||
Двоичные данные
TEMA6/pic0.png
Обычный файл
|
После Ширина: | Высота: | Размер: 102 KiB |
Двоичные данные
TEMA6/pic1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 9.1 KiB |
Двоичные данные
TEMA6/pic2.png
Обычный файл
|
После Ширина: | Высота: | Размер: 9.5 KiB |
Двоичные данные
TEMA6/pic3.png
Обычный файл
|
После Ширина: | Высота: | Размер: 9.3 KiB |
Двоичные данные
TEMA6/pic4.png
Обычный файл
|
После Ширина: | Высота: | Размер: 9.9 KiB |
Двоичные данные
TEMA6/pic5.png
Обычный файл
|
После Ширина: | Высота: | Размер: 8.7 KiB |
416
TEMA6/report.md
Обычный файл
@@ -0,0 +1,416 @@
|
|||||||
|
# Отчет по теме 6
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## 1 Запуск интерактивной оболочки IDLE
|
||||||
|
|
||||||
|
Была запущена интерактивная оболочка IDLE.
|
||||||
|
|
||||||
|
## 2 Изучение вывода данных на экран дисплея
|
||||||
|
|
||||||
|
Были изучены и применены различные способы вывода данных на экран.
|
||||||
|
|
||||||
|
## 2.1 Изучение эхо-вывода
|
||||||
|
|
||||||
|
```py
|
||||||
|
stroka='Автоматизированная система управления'
|
||||||
|
stroka
|
||||||
|
'Автоматизированная система управления'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.2 Изучение вывода данных с помощью печати
|
||||||
|
|
||||||
|
Была изучена функция print для вывода текста. Текст был выведен в одну строку, далее в две строки с использованием экранированных последовательностей, далее был выведен текст с дописанным в конце текстом, используя аргумент end. И также был выведен текст в три строки, используя троиные кавычки.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>fff=234.5;gg='Значение температуры = '
|
||||||
|
>>>print(gg, fff) #Можно вывести несколько объектов за одно обращение к функции
|
||||||
|
Значение температуры = 234.5
|
||||||
|
>>>print(gg, fff, sep="\n")
|
||||||
|
|
||||||
|
Значение температуры =
|
||||||
|
234.5
|
||||||
|
>>>print(gg, fff,sep='\n',end='***'); print('____')
|
||||||
|
|
||||||
|
Значение температуры =
|
||||||
|
234.5***____
|
||||||
|
>>>print()
|
||||||
|
|
||||||
|
|
||||||
|
>>>print(""" Здесь может выводиться
|
||||||
|
большой текст,
|
||||||
|
занимающий несколько строк""") #В этом варианте текст выводится в три отдельные строки как и при вводе команды, благодаря троиным кавычкам.
|
||||||
|
|
||||||
|
Здесь может выводиться
|
||||||
|
большой текст,
|
||||||
|
занимающий несколько строк
|
||||||
|
>>>print("Здесь может выводиться",
|
||||||
|
"большой текст,",
|
||||||
|
"занимающий несколько строк") #В данном случае текст выводится подрят в одну строку.
|
||||||
|
|
||||||
|
Здесь может выводиться большой текст, занимающий несколько строк
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.3 Изучение вывода данных с помощью функции write
|
||||||
|
|
||||||
|
Был испортирован модуль sys, и использована функция write, которая записывает и выводит текст, а так же возвращается количество байтов, записанных в строку.
|
||||||
|
|
||||||
|
```
|
||||||
|
>>>import sys
|
||||||
|
>>>sys.stdout.write('Функция write')
|
||||||
|
Функция write13
|
||||||
|
>>>sys.stdout.write('Функция write')
|
||||||
|
Функция write13
|
||||||
|
>>>sys.stdout.write('Функция write\n')
|
||||||
|
Функция write
|
||||||
|
14
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3 Изучение ввода данных с клавиатуры
|
||||||
|
|
||||||
|
С помощью функции input был произведен вывод текста, введенного с клавиатуры. Так же был создан цикл, который просит пользователя ввести значение до тех пор, пока оно не будет удовлетворять определенному интервалу, а потом выводит это значение на дисплей. Также с помощью функции eval Была создана команда, благодаря которой выражение, введенное пользователен с консоли исполняется, и выдается результат расчета.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>psw=input('Введите пароль:')
|
||||||
|
Введите пароль:56gf
|
||||||
|
>>>psw
|
||||||
|
'56gf'
|
||||||
|
>>>type(psw)
|
||||||
|
<class 'str'>
|
||||||
|
>>>while True:
|
||||||
|
znach=float(input('Задайте коэф.усиления = '))
|
||||||
|
if znach<17.5 or znach>23.8:
|
||||||
|
print('Ошибка!')
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
Задайте коэф.усиления = 15.4
|
||||||
|
Ошибка!
|
||||||
|
Задайте коэф.усиления = 21.6
|
||||||
|
>>>import math
|
||||||
|
>>>print(eval(input('введите выражение для расчета = ')))
|
||||||
|
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
|
||||||
|
1.34504378689765
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4 Изучение различных способов чтения данных из файла и записи в файл
|
||||||
|
|
||||||
|
Были изучены и применены разные способы чтения и записи данных.
|
||||||
|
|
||||||
|
## 4.1 Изучение модуля os для работы с путями к файлам
|
||||||
|
|
||||||
|
Был просмотрен текущий рабочий каталог, занесен в переменную d. После этого совершен переход в другой рабочий католог. Были самостоятельно изучены и применены методы из модуля os и подмодуля os.path:
|
||||||
|
|
||||||
|
mkdir - создает папку в рабочем каталоге (в приложенном фото видно, что в каталоге появилвсь папка);
|
||||||
|

|
||||||
|
rmdir - удаляет из каталога пустую папку;
|
||||||
|
listdir - возвращает список имен файлов/папок в указанном каталоге (или если аргумент не указан, то в текущем каталоге);
|
||||||
|
path.isdir - возвращает true, если папка является существующей в каталоге.
|
||||||
|
|
||||||
|
Далее была создана переменная, содержащая строку - путь в файлу report и имя данного файла. Используя эту переменную, с помощью функций модуля os была создана строка содержащая только путь, потом только имя, а потом применена функция, которая разделяет в одну переменную - путь, в другую - имя файла. Далее было проверено существование определенного пути, и существование определенного файла с указаном каталоге.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import os
|
||||||
|
>>>os.getcwd()
|
||||||
|
'C:\\Users\\Лиза\\AppData\\Local\\Programs\\Python\\Python313'
|
||||||
|
>>>d = str(os.getcwd())
|
||||||
|
>>>d
|
||||||
|
'C:\\Users\\Лиза\\AppData\\Local\\Programs\\Python\\Python313'
|
||||||
|
>>>os.chdir('C:\\Users\\Лиза\\OneDrive\\Desktop\\python-labs\\TEMA6')
|
||||||
|
>>>os.mkdir("папка новая")
|
||||||
|
>>>os.rmdir("папка новая")
|
||||||
|
>>>os.listdir()
|
||||||
|
['.gitkeep', 'pic0.png', 'report.md', 'task.md']
|
||||||
|
>>>os.path.isdir("папка новая")
|
||||||
|
False
|
||||||
|
>>>os.path.isdir("task")
|
||||||
|
False
|
||||||
|
>>>os.path.isdir("TEMA6")
|
||||||
|
False
|
||||||
|
>>>os.path.isdir("tema")
|
||||||
|
True
|
||||||
|
>>>fil=os.path.abspath("report.md")
|
||||||
|
>>>fil
|
||||||
|
'C:\\Users\\Лиза\\OneDrive\\Desktop\\python-labs\\TEMA6\\report.md'
|
||||||
|
>>>drkt=os.path.dirname(fil)
|
||||||
|
>>>drkt
|
||||||
|
'C:\\Users\\Лиза\\OneDrive\\Desktop\\python-labs\\TEMA6'
|
||||||
|
>>>name = os.path.basename(fil)
|
||||||
|
>>>name
|
||||||
|
'report.md'
|
||||||
|
>>>head, tail = os.path.split(fil)
|
||||||
|
>>>head
|
||||||
|
'C:\\Users\\Лиза\\OneDrive\\Desktop\\python-labs\\TEMA6'
|
||||||
|
>>>tail
|
||||||
|
'report.md'
|
||||||
|
>>>os.path.exists('C:\\Users\\Лиза\\OneDrive\\Desktop\\python-labs\\TEMA6')
|
||||||
|
True
|
||||||
|
>>>os.path.exists('C:\\Users\\Лиза\\OneDrive\\Desktop\\python-labs\\TEMA10')
|
||||||
|
False
|
||||||
|
>>>os.path.isfile(fil)
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.2 Изучение обобщенного процесса работы с файлами
|
||||||
|
|
||||||
|
Было определено, что для обмена данными с файлами необходимо:
|
||||||
|
|
||||||
|
• Открыть файла с указанием его имени и цели;
|
||||||
|
• Выполнить операции обмена данными с файлом;
|
||||||
|
• Закрыть файл.
|
||||||
|
|
||||||
|
## 4.3 Изучение функции open для открытия файлов с разной целью
|
||||||
|
|
||||||
|
Была применена команда open с различным написанием аргументов, создан файловый обьект. Выведен тип и список атрибутов этого обьекта.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>fp=open(file=drkt+'\\zapis1.txt',mode='w')
|
||||||
|
|
||||||
|
>>>fp=open(drkt+'\\zapis1.txt','w')
|
||||||
|
|
||||||
|
>>>fp=open('zapis1.txt','w')
|
||||||
|
|
||||||
|
>>>type(fp)
|
||||||
|
|
||||||
|
<class '_io.TextIOWrapper'>
|
||||||
|
>>>dir(fp)
|
||||||
|
|
||||||
|
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'reconfigure', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'write_through', 'writelines']
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.4 Изучение закрытия файла
|
||||||
|
|
||||||
|
Файл был закрыт.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>fp.close()
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.5 Изучение функции write для записи данных в текст
|
||||||
|
|
||||||
|
Был создан список из 12 элементов и поочередно в файл записаны числа из списка в три строки.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>sps=list(range(1,13))
|
||||||
|
|
||||||
|
>>>sps
|
||||||
|
|
||||||
|
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
||||||
|
>>>fp2=open('zapis3.txt','w')
|
||||||
|
|
||||||
|
>>>fp2.write(str(sps[:4])+'\n')
|
||||||
|
|
||||||
|
13
|
||||||
|
>>>fp2.write(str(sps[4:8])+'\n')
|
||||||
|
|
||||||
|
13
|
||||||
|
>>>fp2.write(str(sps[8:])+'\n')
|
||||||
|
|
||||||
|
16
|
||||||
|
>>>fp2.close()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Далее был создан список из трех списков и с помощью цикла for все элементы списка были вписаны в файл в одну строку.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]]
|
||||||
|
|
||||||
|
>>>sps3
|
||||||
|
|
||||||
|
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
|
||||||
|
>>>fp3=open('zapis4.txt','w')
|
||||||
|
|
||||||
|
>>>for i in range(len(sps3)):
|
||||||
|
stroka4=sps3[i][0]+' '+str(sps3[i][1])
|
||||||
|
fp3.write(stroka4)
|
||||||
|
|
||||||
|
|
||||||
|
11
|
||||||
|
11
|
||||||
|
12
|
||||||
|
>>>fp3.close()
|
||||||
|
```
|
||||||
|

|
||||||
|
|
||||||
|
Далее с помощью цикла for три списка из общего списка были вписаны в файл поочередно в три строки. Запись цикла была сжата в одну строку, и проверено, что при написании той же инструкции в одну строку, содержимое файла не изменяется, относительно предыдущего метода с этими же инструкциями.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>gh=open('zapis5.txt','w')
|
||||||
|
|
||||||
|
>>>for r in sps3:
|
||||||
|
gh.write(r[0]+' '+str(r[1])+'\n')
|
||||||
|
|
||||||
|
|
||||||
|
12
|
||||||
|
12
|
||||||
|
13
|
||||||
|
>>>gh.close()
|
||||||
|
|
||||||
|
>>>gh=open('zapis6.txt','w')
|
||||||
|
|
||||||
|
>>>for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')
|
||||||
|
|
||||||
|
|
||||||
|
12
|
||||||
|
12
|
||||||
|
13
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 4.6 Изучение одного из способов чтения данных из файла с помощью цикла for
|
||||||
|
|
||||||
|
С помощью open был открыт файл для чтения, и из его символов был сконструирован список, состоящий из символов. После символы в списке были преобразованы в числа, и список стал идентичен тому, который создавался ранее и записывался в файл.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>sps1=[]
|
||||||
|
>>>fp=open('zapis3.txt')
|
||||||
|
>>>for stroka in fp:
|
||||||
|
stroka=stroka.rstrip('\n')
|
||||||
|
stroka=stroka.replace('[','')
|
||||||
|
stroka=stroka.replace(']','')
|
||||||
|
sps1=sps1+stroka.split(',')
|
||||||
|
|
||||||
|
|
||||||
|
>>>fp.close()
|
||||||
|
>>>sps1
|
||||||
|
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
|
||||||
|
>>>sps2=[]
|
||||||
|
>>>for i in sps1:
|
||||||
|
sps2.append(int(i))
|
||||||
|
|
||||||
|
|
||||||
|
>>>sps2
|
||||||
|
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.7 Изучение способа чтения данных из файла с помощью функции read
|
||||||
|
|
||||||
|
Был открыт текстовый файл и с помощью функции read из него сначала было прочитано и отображено 12 символов, а потом прочитаны остальные символы с помощью функции read без указания аргумента.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>fp=open('zapis3.txt')
|
||||||
|
|
||||||
|
>>>stroka1=fp.read(12)
|
||||||
|
|
||||||
|
>>>stroka2=fp.read()
|
||||||
|
|
||||||
|
>>>fp.close()
|
||||||
|
|
||||||
|
>>>stroka1
|
||||||
|
|
||||||
|
'[1, 2, 3, 4]'
|
||||||
|
>>>stroka2
|
||||||
|
|
||||||
|
'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.8 Изучение чтения данных из файла по строкам
|
||||||
|
|
||||||
|
Самостоятельно были изучены и применены функции: readline - которая читает одну строку, начиная с указателя текущей позиции, и функция readlines, которая по такому же принципу читает все строки и возвращает их в виде списка.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>fp=open('zapis3.txt')
|
||||||
|
|
||||||
|
>>>s1 = fp.readline()
|
||||||
|
|
||||||
|
>>>s2=fp.readline()
|
||||||
|
|
||||||
|
>>>s1
|
||||||
|
|
||||||
|
'[1, 2, 3, 4]\n'
|
||||||
|
>>>s2
|
||||||
|
|
||||||
|
'[5, 6, 7, 8]\n'
|
||||||
|
>>>fp.close()
|
||||||
|
|
||||||
|
>>>fp=open('zapis3.txt')
|
||||||
|
>>>s3 = fp.readlines()
|
||||||
|
>>>s3
|
||||||
|
['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n']
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.9 Изучение работы с бинарными файлами с помощью модуля pickle
|
||||||
|
|
||||||
|
С помощью модуля pickle созданное множество было вписано в бинарный файл, а потом данные прочитаны из этого файла.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import pickle
|
||||||
|
>>>mnoz1={'pen','book','pen','iPhone','table','book'} #Объект типа «множество»
|
||||||
|
>>>fp=open('zapis6.mnz','wb') # Бинарный файл – на запись
|
||||||
|
>>>pickle.dump(mnoz1,fp) #dump – метод записи объекта в файл
|
||||||
|
>>>fp.close()
|
||||||
|
>>>fp=open('zapis6.mnz','rb')
|
||||||
|
>>>mnoz2=pickle.load(fp) #load – метод чтения объекта из бинарного файла
|
||||||
|
>>>fp.close()
|
||||||
|
>>>mnoz2 #Результат не такой как при вводе множества mnoz1, так как множество не имеет повторений и порядка элементов, поэтому автоматически множество обьединило повторяющиеся слова.
|
||||||
|
{'pen', 'iPhone', 'book', 'table'}
|
||||||
|
mnoz1 == mnoz2
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Также в файл было записано два обьекта и прочитано поочередно с помощью load.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>fp=open('zapis7.2ob','wb')
|
||||||
|
>>>pickle.dump(mnoz1,fp)
|
||||||
|
>>>pickle.dump(sps3,fp)
|
||||||
|
>>>fp.close()
|
||||||
|
>>>fp=open('zapis7.2ob','rb')
|
||||||
|
>>>obj1=pickle.load(fp) #Первое обращение к load читает первый объект
|
||||||
|
>>>obj2=pickle.load(fp) #Второе – читает второй
|
||||||
|
>>>fp.close()
|
||||||
|
>>>obj1
|
||||||
|
{'pen', 'iPhone', 'book', 'table'}
|
||||||
|
>>>obj2
|
||||||
|
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5
|
||||||
|
|
||||||
|
Был создан текстовый файл, куда с помощью модуля sys и методы stdout был перенаправлен поток вывода, и в нем был напечатан текст. Далее поток вывода был перенаправлен обратно и проведена проверка с помощью print.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import sys
|
||||||
|
>>>vr_out=sys.stdout #Запоминаем текущий поток вывода
|
||||||
|
>>>fc=open('Stroka.txt','w') #Откроем файл вывода
|
||||||
|
>>>sys.stdout=fc #Перенацеливаем стандартный поток вывода на файл
|
||||||
|
>>>print('запись строки в файл') #Вывод теперь будет не на экран, а в файл
|
||||||
|
>>>sys.stdout=vr_out #Восстановление текущего потока
|
||||||
|
>>>print('запись строки на экран') #Убеждаемся, что вывод на экран восстановился
|
||||||
|
запись строки на экран
|
||||||
|
>>>fc.close()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Также был перенаправлен ввод на файл, и реализован цикл, в котором считывается текст из файла и печатается на экран.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>tmp_in = sys.stdin #Запоминаем текущий поток ввода
|
||||||
|
>>>fd = open("Stroka.txt", "r") #Открываем файл для ввода (чтения)
|
||||||
|
>>>sys.stdin = fd #Перенацеливаем ввод на файл вместо клавиатуры
|
||||||
|
>>>sys.stdin
|
||||||
|
<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'>
|
||||||
|
>>>while True:
|
||||||
|
try:
|
||||||
|
line = input () #Считываем из файла строку
|
||||||
|
print(line) # Отображаем считанное
|
||||||
|
except EOFError:
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
запись строки в файл
|
||||||
|
>>>fd.close()
|
||||||
|
>>>sys.stdin=tmp_in #Не забыть вернуть стандартное назначение для потока ввода
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6 Завершение работы в IDLE
|
||||||
|
|
||||||
|
Был завершен сеанс в среде IDLE.
|
||||||
78
TEMA6/task.md
Обычный файл
@@ -0,0 +1,78 @@
|
|||||||
|
# Общее контрольное задание по теме 6
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Придумайте инструкции и запишите их в файл с расширением .py , которые выполняют следующие операции:
|
||||||
|
• Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
|
||||||
|
• Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
|
||||||
|
• Записывается кортеж в бинарный файл.
|
||||||
|
• Записывается в этот же файл список и закрывается файл.
|
||||||
|
• Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
|
||||||
|
• Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
|
||||||
|
• Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде отдельных списков со своими именами.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import random
|
||||||
|
>>>num = list(range(1, 126, 1))
|
||||||
|
>>>num
|
||||||
|
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125]
|
||||||
|
>>>kor = ()
|
||||||
|
>>>for i in num:
|
||||||
|
kor = kor + (random.randint(6, 56),)
|
||||||
|
|
||||||
|
|
||||||
|
>>>kor
|
||||||
|
(27, 38, 7, 18, 35, 11, 41, 35, 20, 24, 43, 7, 48, 17, 26, 39, 35, 17, 54, 22, 31, 11, 8, 38, 7, 34, 22, 14, 36, 7, 15, 23, 48, 34, 31, 18, 39, 55, 18, 11, 32, 18, 51, 34, 41, 31, 8, 11, 28, 25, 42, 56, 10, 52, 6, 9, 15, 53, 36, 27, 48, 6, 53, 50, 51, 49, 11, 11, 16, 36, 39, 39, 18, 52, 14, 44, 13, 27, 26, 27, 23, 13, 36, 24, 34, 27, 21, 6, 37, 29, 53, 13, 54, 22, 26, 46, 36, 22, 48, 11, 24, 28, 9, 23, 36, 45, 6, 55, 9, 31, 22, 42, 50, 55, 46, 7, 55, 17, 54, 32, 39, 41, 14, 49, 22)
|
||||||
|
>>>len(kor)
|
||||||
|
125
|
||||||
|
>>>str_kor = tuple(map(str, kor))
|
||||||
|
>>>str_kor
|
||||||
|
('27', '38', '7', '18', '35', '11', '41', '35', '20', '24', '43', '7', '48', '17', '26', '39', '35', '17', '54', '22', '31', '11', '8', '38', '7', '34', '22', '14', '36', '7', '15', '23', '48', '34', '31', '18', '39', '55', '18', '11', '32', '18', '51', '34', '41', '31', '8', '11', '28', '25', '42', '56', '10', '52', '6', '9', '15', '53', '36', '27', '48', '6', '53', '50', '51', '49', '11', '11', '16', '36', '39', '39', '18', '52', '14', '44', '13', '27', '26', '27', '23', '13', '36', '24', '34', '27', '21', '6', '37', '29', '53', '13', '54', '22', '26', '46', '36', '22', '48', '11', '24', '28', '9', '23', '36', '45', '6', '55', '9', '31', '22', '42', '50', '55', '46', '7', '55', '17', '54', '32', '39', '41', '14', '49', '22')
|
||||||
|
>>>L_fam = ["Dobrovolska", "Efremov", "Zelenkina", "Pohil", "Kuzmenko"]
|
||||||
|
>>>import os
|
||||||
|
>>>os.chdir("C:\\Users\\Лиза\\OneDrive\\Desktop\\python-labs\\TEMA6")
|
||||||
|
>>>f = open('bin.mnz', 'wb')
|
||||||
|
>>>import pickle
|
||||||
|
>>>pickle.dump(str_kor, f)
|
||||||
|
>>>pickle.dump(L_fam, f)
|
||||||
|
>>>f.close()
|
||||||
|
>>>f = open('bin.mnz', 'rb')
|
||||||
|
>>>obj1 = pickle.load(f)
|
||||||
|
>>>obj2_spis = pickle.load(f)
|
||||||
|
>>>obj1
|
||||||
|
('27', '38', '7', '18', '35', '11', '41', '35', '20', '24', '43', '7', '48', '17', '26', '39', '35', '17', '54', '22', '31', '11', '8', '38', '7', '34', '22', '14', '36', '7', '15', '23', '48', '34', '31', '18', '39', '55', '18', '11', '32', '18', '51', '34', '41', '31', '8', '11', '28', '25', '42', '56', '10', '52', '6', '9', '15', '53', '36', '27', '48', '6', '53', '50', '51', '49', '11', '11', '16', '36', '39', '39', '18', '52', '14', '44', '13', '27', '26', '27', '23', '13', '36', '24', '34', '27', '21', '6', '37', '29', '53', '13', '54', '22', '26', '46', '36', '22', '48', '11', '24', '28', '9', '23', '36', '45', '6', '55', '9', '31', '22', '42', '50', '55', '46', '7', '55', '17', '54', '32', '39', '41', '14', '49', '22')
|
||||||
|
>>>obj2_spis
|
||||||
|
['Dobrovolska', 'Efremov', 'Zelenkina', 'Pohil', 'Kuzmenko']
|
||||||
|
>>>if obj1 == str_kor:
|
||||||
|
print("обьекты кортежа совпадают")
|
||||||
|
else: print("обьекты кортежа не совпадают")
|
||||||
|
|
||||||
|
обьекты кортежа совпадают
|
||||||
|
>>>if obj2_spis == L_fam:
|
||||||
|
print("обьекты списка совпадают")
|
||||||
|
else: print("обьекты списка не совпадают")
|
||||||
|
|
||||||
|
обьекты списка совпадают
|
||||||
|
>>>List = []
|
||||||
|
>>>for i in range(0, 125, 5):
|
||||||
|
List.append(list(str_kor[i:i + 5]))
|
||||||
|
|
||||||
|
|
||||||
|
>>>List
|
||||||
|
[['27', '38', '7', '18', '35'], ['11', '41', '35', '20', '24'], ['43', '7', '48', '17', '26'], ['39', '35', '17', '54', '22'], ['31', '11', '8', '38', '7'], ['34', '22', '14', '36', '7'], ['15', '23', '48', '34', '31'], ['18', '39', '55', '18', '11'], ['32', '18', '51', '34', '41'], ['31', '8', '11', '28', '25'], ['42', '56', '10', '52', '6'], ['9', '15', '53', '36', '27'], ['48', '6', '53', '50', '51'], ['49', '11', '11', '16', '36'], ['39', '39', '18', '52', '14'], ['44', '13', '27', '26', '27'], ['23', '13', '36', '24', '34'], ['27', '21', '6', '37', '29'], ['53', '13', '54', '22', '26'], ['46', '36', '22', '48', '11'], ['24', '28', '9', '23', '36'], ['45', '6', '55', '9', '31'], ['22', '42', '50', '55', '46'], ['7', '55', '17', '54', '32'], ['39', '41', '14', '49', '22']]
|
||||||
|
>>>for i in range(25):
|
||||||
|
list_name = f"list{i + 1}"
|
||||||
|
code = f"{list_name} = List[{i}]"
|
||||||
|
exec(code)
|
||||||
|
|
||||||
|
>>>print(list1)
|
||||||
|
>>>print(list2)
|
||||||
|
|
||||||
|
['27', '38', '7', '18', '35']
|
||||||
|
['11', '41', '35', '20', '24']
|
||||||
|
```
|
||||||
|
|
||||||
40
TEMA6/task.py
Обычный файл
@@ -0,0 +1,40 @@
|
|||||||
|
import random
|
||||||
|
num = list(range(1, 126, 1))
|
||||||
|
kor = ()
|
||||||
|
for i in num:
|
||||||
|
kor = kor + (random.randint(6, 56),)
|
||||||
|
|
||||||
|
|
||||||
|
print("кортеж чисел: ", kor)
|
||||||
|
print("длина кортежа: ", len(kor))
|
||||||
|
str_kor = tuple(map(str, kor))
|
||||||
|
print("кортеж с элементами - строками: ", str_kor)
|
||||||
|
L_fam = ["Dobrovolska", "Efremov", "Zelenkina", "Pohil", "Kuzmenko"]
|
||||||
|
print("список фамилий: ", L_fam)
|
||||||
|
import os
|
||||||
|
os.chdir("C:\\Users\\Лиза\\OneDrive\\Desktop\\python-labs\\TEMA6")
|
||||||
|
f = open('bin.mnz', 'wb')
|
||||||
|
import pickle
|
||||||
|
pickle.dump(str_kor, f)
|
||||||
|
pickle.dump(L_fam, f)
|
||||||
|
f.close()
|
||||||
|
f = open('bin.mnz', 'rb')
|
||||||
|
obj1 = pickle.load(f)
|
||||||
|
obj2_spis = pickle.load(f)
|
||||||
|
if obj1 == str_kor:
|
||||||
|
print("обьекты кортежа совпадают")
|
||||||
|
else: print("обьекты кортежа не совпадают")
|
||||||
|
|
||||||
|
if obj2_spis == L_fam:
|
||||||
|
print("обьекты списка совпадают")
|
||||||
|
else: print("обьекты списка не совпадают")
|
||||||
|
List = []
|
||||||
|
for i in range(0, 125, 5):
|
||||||
|
List.append(list(str_kor[i:i + 5]))
|
||||||
|
|
||||||
|
for i in range(25):
|
||||||
|
list_name = f"list{i + 1}" #Создается имя переменной (list1, list2,..)
|
||||||
|
globals()[list_name] = List[i]
|
||||||
|
|
||||||
|
print("совокупность чисел list 1 из кортежа: ", list1)
|
||||||
|
print("совокупность чисел list2 из кортежа: ", list2)
|
||||||
76
TEMA6/test.md
Обычный файл
@@ -0,0 +1,76 @@
|
|||||||
|
## Тест по модулю 2
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
Вариант 14
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
1) Создайте кортеж с 8 разными названиями городов России. Напишите инструкцию создания списка с 5 городами, случайно отобранными из кортежа.
|
||||||
|
|
||||||
|
2) Запросите у пользователя имя текстового файла и сохраните в нем созданный список - по два города на строке.
|
||||||
|
|
||||||
|
3) Создайте список с 30 целыми случайными десятичными числами из интервала значений от 100 до 200. Определите по нему, сколько значений попадает в интервал от 130 до 170. Выведите результат на экран.
|
||||||
|
|
||||||
|
4) Определите, сколько в списке четных и сколько нечетных чисел. Отобразите результат в виде одной строки на экране.
|
||||||
|
|
||||||
|
5) Прочитайте данные из ранее созданного текстового файла и отобразите их на экране так, как они лежат в файле под общим заголовком: "Города России".
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>sities_russia = ("Мск", "Спб", "Кзн", "Новгород", "Псков", "Ленинград", "Волгоград", "Сталинград")
|
||||||
|
>>>import random
|
||||||
|
>>>selected_cities_list = random.sample(Gorod, 5)
|
||||||
|
>>> selected_cities_list
|
||||||
|
['Мск', 'Кзн', 'Псков', 'Ленинград', 'Сталинград']
|
||||||
|
|
||||||
|
>>>file_name = input("Введите имя текстового файла для сохранения городов: ")
|
||||||
|
|
||||||
|
>>>open(file_name, 'w', encoding='utf-8') as f:
|
||||||
|
for i in range(0, len(selected_cities_list), 2):
|
||||||
|
city1 = selected_cities_list[i]
|
||||||
|
if i + 1 < len(selected_cities_list):
|
||||||
|
city2 = selected_cities_list[i + 1]
|
||||||
|
f.write(f"{city1}, {city2}\n")
|
||||||
|
else:
|
||||||
|
f.write(f"{city1}\n")
|
||||||
|
|
||||||
|
print(f"Список городов успешно сохранен в файл '{file_name}'.")
|
||||||
|
|
||||||
|
>>>print("-" * 30)
|
||||||
|
|
||||||
|
>>>random_numbers = [random.randint(100, 200) for _ in range(30)]
|
||||||
|
|
||||||
|
>>>count_in_interval = 0
|
||||||
|
>>>for number in random_numbers:
|
||||||
|
if 130 <= number <= 170:
|
||||||
|
count_in_interval += 1
|
||||||
|
|
||||||
|
>>>print("Случайные числа:", random_numbers)
|
||||||
|
>>>print(f"Количество чисел в интервале от 130 до 170: {count_in_interval}")
|
||||||
|
>>>print("-" * 30)
|
||||||
|
|
||||||
|
|
||||||
|
>>>even_count = 0
|
||||||
|
>>>odd_count = 0
|
||||||
|
|
||||||
|
>>>for number in random_numbers:
|
||||||
|
if number % 2 == 0:
|
||||||
|
even_count += 1
|
||||||
|
else:
|
||||||
|
odd_count += 1
|
||||||
|
|
||||||
|
|
||||||
|
print(f"В списке: {even_count} четных чисел и {odd_count} нечетных чисел.")
|
||||||
|
print("-" * 30)
|
||||||
|
|
||||||
|
print("Города России")
|
||||||
|
print("-" * 15)
|
||||||
|
|
||||||
|
with open(file_name, 'r', encoding='utf-8') as f:
|
||||||
|
|
||||||
|
file_lines = f.readlines()
|
||||||
|
for line in file_lines:
|
||||||
|
|
||||||
|
print(line.strip())
|
||||||
|
|
||||||
|
|
||||||
|
print("-" * 30)
|
||||||
0
TEMA6/zapis1.txt
Обычный файл
3
TEMA6/zapis3.txt
Обычный файл
@@ -0,0 +1,3 @@
|
|||||||
|
[1, 2, 3, 4]
|
||||||
|
[5, 6, 7, 8]
|
||||||
|
[9, 10, 11, 12]
|
||||||
1
TEMA6/zapis4.txt
Обычный файл
@@ -0,0 +1 @@
|
|||||||
|
Иванов И. 1Петров П. 2Сидоров С. 3
|
||||||
3
TEMA6/zapis5.txt
Обычный файл
@@ -0,0 +1,3 @@
|
|||||||
|
Иванов И. 1
|
||||||
|
Петров П. 2
|
||||||
|
Сидоров С. 3
|
||||||
Двоичные данные
TEMA6/zapis6.mnz
Обычный файл
0
TEMA6/zapis6.txt
Обычный файл
Двоичные данные
TEMA6/zapis7.2ob
Обычный файл
Двоичные данные
TEMA7/pic0.png
Обычный файл
|
После Ширина: | Высота: | Размер: 30 KiB |
567
TEMA7/report.md
Обычный файл
@@ -0,0 +1,567 @@
|
|||||||
|
# Отчет по теме 7
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## 1 Запуск интерактивной оболочки IDLE
|
||||||
|
|
||||||
|
Была запущена интерактивная оболочка IDLE.
|
||||||
|
|
||||||
|
## 2 Изучение создания простых функций
|
||||||
|
|
||||||
|
Было изучено создание различных функций.
|
||||||
|
|
||||||
|
## 2.1 Изучение создания функции без аргументов
|
||||||
|
|
||||||
|
Была создана и потом применена функция, которая печатает определенный текст. Был определен класс функции и просмотрено пространство имен, в котором появилось название созданной функции. Просмотрена помощь по функции, в которой был выведен комментарий, созданный при создании функции. Можно сделать вывод, что в описании к функции нужно описать ее концепцию, что делает функция и какие аргументы нужно указывать.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def uspeh():
|
||||||
|
"""Подтверждение успеха операции"""
|
||||||
|
print('Выполнено успешно!')
|
||||||
|
|
||||||
|
|
||||||
|
>>>uspeh()
|
||||||
|
Выполнено успешно!
|
||||||
|
>>>type(uspeh)
|
||||||
|
<class 'function'>
|
||||||
|
>>>dir()
|
||||||
|
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os', 'uspeh']
|
||||||
|
>>>help(uspeh)
|
||||||
|
Help on function uspeh in module __main__:
|
||||||
|
|
||||||
|
uspeh()
|
||||||
|
Подтверждение успеха операции
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.2 Изучение создания функции с двумя аргументами
|
||||||
|
|
||||||
|
Была создана и применена функция сравнения двух чисел. При передаче в аргументы переменных класса чисел, функция сравнила числа, а при передачи чисел типа строка, функция сравнила переменные посимвольно, то есть первую цифру числа.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def sravnenie(a,b):
|
||||||
|
"""Сравнение a и b"""
|
||||||
|
if a>b:
|
||||||
|
print(a,' больше ',b)
|
||||||
|
elif a<b:
|
||||||
|
print(a, ' меньше ',b)
|
||||||
|
else:
|
||||||
|
print(a, ' равно ',b)
|
||||||
|
|
||||||
|
|
||||||
|
>>>n,m=16,5;sravnenie(n,m)
|
||||||
|
16 больше 5
|
||||||
|
>>>n,m="16","5";sravnenie(n,m)
|
||||||
|
16 меньше 5
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.3 Изучение создания функции с применением return
|
||||||
|
|
||||||
|
Была создана и применена функция, которая возвращает результат вычисления математического выражения.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def logistfun(b,a):
|
||||||
|
"""Вычисление логистической функции"""
|
||||||
|
import math
|
||||||
|
return a/(1+math.exp(-b))
|
||||||
|
|
||||||
|
>>>v,w=1,0.7;z=logistfun(w,v)
|
||||||
|
>>>z
|
||||||
|
0.6681877721681662
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.4 Изучение создания функции сложения обьектов различных типов
|
||||||
|
|
||||||
|
Была создана и применена функция сложения различных обьектов. При сложении чисел, фунцкия вернула сумму, при сложении строк, списков и кортежей, функция обьединила их в один обьект, а при передаче в виде аргументов словарей и множеств произошла ошибка.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def slozh(a1,a2,a3,a4):
|
||||||
|
""" Сложение значений четырех аргументов"""
|
||||||
|
return a1+a2+a3+a4
|
||||||
|
|
||||||
|
|
||||||
|
>>>slozh(1,2,3,4) # Сложение чисел
|
||||||
|
10
|
||||||
|
>>>slozh('1','2','3','4') # Сложение строк
|
||||||
|
'1234'
|
||||||
|
>>>b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1]
|
||||||
|
>>>q=slozh(b1,b2,b3,b4) #Сложение списков
|
||||||
|
>>>kor = ("a", 8)
|
||||||
|
>>>kor2 = ("b", 9)
|
||||||
|
>>>kor3 = ("c", 10)
|
||||||
|
>>>kor4 = ("d", 11)
|
||||||
|
>>>k=slozh(kor, kor2, kor3, kor4)
|
||||||
|
>>>k
|
||||||
|
('a', 8, 'b', 9, 'c', 10, 'd', 11)
|
||||||
|
>>>sl1 = {"A": 8, "B": 9}
|
||||||
|
>>>sl2 = {"B": 10, "C": 11}
|
||||||
|
>>>sl3 = {"D": 12, "E": 13}
|
||||||
|
>>>sl4 = {"F": 14, "H": 15}
|
||||||
|
>>>sl=slozh(sl1, sl2, sl3, sl4)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#47>", line 1, in <module>
|
||||||
|
sl=slozh(sl1, sl2, sl3, sl4)
|
||||||
|
File "<pyshell#29>", line 3, in slozh
|
||||||
|
return a1+a2+a3+a4
|
||||||
|
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
|
||||||
|
>>>mn1 = {"A", "B"}
|
||||||
|
>>>mn2 = {"C", "D"}
|
||||||
|
>>>mn3 = {"E", "F"}
|
||||||
|
>>>mn4 = {"H", "J"}
|
||||||
|
>>>mn=slozh(mn1, mn2, mn3, mn4)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#55>", line 1, in <module>
|
||||||
|
mn=slozh(mn1, mn2, mn3, mn4)
|
||||||
|
File "<pyshell#29>", line 3, in slozh
|
||||||
|
return a1+a2+a3+a4
|
||||||
|
TypeError: unsupported operand type(s) for +: 'set' and 'set'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.5 Изучение создания функции, которая создает список со значениями вычисленных сигналов
|
||||||
|
|
||||||
|
Была создана функция, которая вычисляет значение по определенной формуле, далее реализован цикл, в котором созданный ранее список пополняется новыми значениями выходного сигнала, которые зависят от предыдущего значения выходного сигнала. По данным выходного сигнала был построен график.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def inerz(x,T,ypred):
|
||||||
|
""" Модель устройства с памятью:
|
||||||
|
x- текущее значение вх.сигнала,
|
||||||
|
T -постоянная времени,
|
||||||
|
ypred - предыдущее значение выхода устройства"""
|
||||||
|
y=(x+T*ypred)/(T+1)
|
||||||
|
return y
|
||||||
|
|
||||||
|
|
||||||
|
>>>sps=[0]+[1]*100
|
||||||
|
>>>spsy=[] #Заготовили список для значений выхода
|
||||||
|
>>>TT=20 #Постоянная времени
|
||||||
|
>>>yy=0 #Нулевое начальное условие
|
||||||
|
>>>for xx in sps:
|
||||||
|
yy=inerz(xx,TT,yy)
|
||||||
|
spsy.append(yy)
|
||||||
|
|
||||||
|
|
||||||
|
>>>import pylab
|
||||||
|
>>>spsm = list(range(101))
|
||||||
|
>>>pylab.plot(spsm, spsy)
|
||||||
|
[<matplotlib.lines.Line2D object at 0x000001E1619A6850>]
|
||||||
|
>>>pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 3 Изучение действий с функциями как с обьектами
|
||||||
|
|
||||||
|
## 3.1 Изучение вывода подсказок по функции
|
||||||
|
|
||||||
|
Были выведены атрибуты созданной функции и применен один из них, который показал описание функции, которое также было выведено с помощью функции help.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>dir(inerz)
|
||||||
|
['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__getstate__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__type_params__']
|
||||||
|
>>>inerz.__doc__
|
||||||
|
'Модель устройства с памятью:\n x- текущее значение вх.сигнала,\nT -постоянная времени,\nypred - предыдущее значение выхода устройства'
|
||||||
|
>>>help(inerz)
|
||||||
|
Help on function inerz in module __main__:
|
||||||
|
|
||||||
|
inerz(x, T, ypred)
|
||||||
|
Модель устройства с памятью:
|
||||||
|
x- текущее значение вх.сигнала,
|
||||||
|
T -постоянная времени,
|
||||||
|
ypred - предыдущее значение выхода устройства
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.2 Изучение создания ссылки на обьект
|
||||||
|
|
||||||
|
Была создана ссылка на функцию и уже по этой ссылке вызвана функция, которая сравнила два числа по величине.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>fnkt=sravnenie
|
||||||
|
>>>v=16
|
||||||
|
>>>fnkt(v,23)
|
||||||
|
16 меньше 23
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.3 Изучение применения условия if для применения разных функций
|
||||||
|
|
||||||
|
Был создан цикл-условия, в котором при однос условии функция определяется одними инструкциями, а при другом условии - другими. И была вызвана эта функция.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>typ_fun=8
|
||||||
|
>>>if typ_fun==1:
|
||||||
|
def func():
|
||||||
|
print('Функция 1')
|
||||||
|
else:
|
||||||
|
def func():
|
||||||
|
print('Функция 2')
|
||||||
|
|
||||||
|
|
||||||
|
>>>func()
|
||||||
|
Функция 2
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4 Изучение работы с аргументами функции
|
||||||
|
|
||||||
|
Были рассмотрены различные варианты передачи аргументов функции и работы с ними.
|
||||||
|
|
||||||
|
## 4.1 Изучение функции как аргумента другой функции
|
||||||
|
|
||||||
|
Была создана функция, а потом вызвана с передачей в виде первого аргумента - другой функции.
|
||||||
|
|
||||||
|
```py
|
||||||
|
def fun_arg(fff,a,b,c):
|
||||||
|
"""fff-имя функции, используемой
|
||||||
|
в качестве аргумента функции fun_arg"""
|
||||||
|
return a+fff(c,b)
|
||||||
|
|
||||||
|
|
||||||
|
zz=fun_arg(logistfun,-3,1,0.7)
|
||||||
|
zz
|
||||||
|
-2.3318122278318336
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.2 Изучение функции, в которой присутствует предопределенный аргумент
|
||||||
|
|
||||||
|
Была создана функция, в которой один аргумент уже предопределен, а при вызове функции передается всего один аргумент из двух.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1
|
||||||
|
"""Вычисление логистической функции"""
|
||||||
|
import math
|
||||||
|
return b/(1+math.exp(-a))
|
||||||
|
|
||||||
|
|
||||||
|
>>>logistfun(0.7) #Вычисление со значением b по умолчанию
|
||||||
|
0.6681877721681662
|
||||||
|
>>>logistfun(0.7,2) #Вычисление с заданным значением b
|
||||||
|
logistfun(b=0.5,a=0.8) # Ссылки на аргументы поменялись местами
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.3 Изучение передачи аргументов функции в произвольном порядке
|
||||||
|
|
||||||
|
Функция была вызвана с передачей аргументов не по порядку, а по названию аргументов.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>logistfun(b=0.5,a=0.8) # Ссылки на аргументы поменялись местами
|
||||||
|
0.34498724056380625
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.4 Изучение передачи аргумента в виде ссылки на список
|
||||||
|
|
||||||
|
Была вызвана функция, которой в качестве аргументов была передана ссылка на список.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>b1234=[b1,b2,b3,b4] # Список списков из п.2.4
|
||||||
|
>>>qq=slozh(*b1234) #Перед ссылкой на список или кортеж надо ставить звездочку
|
||||||
|
>>>qq
|
||||||
|
[1, 2, -1, -2, 0, 2, -1, -1]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.5 Изучение передачи аргумента в виде ссылки на словарь
|
||||||
|
|
||||||
|
Была вызвана функция, которой в качестве аргументов была передана ссылка на словарь. В результате функция взяла в качестве аргументов значения из словаря.
|
||||||
|
|
||||||
|
|
||||||
|
```py
|
||||||
|
qqq=slozh(**dic4) #Перед ссылкой на словарь надо ставить две звездочки
|
||||||
|
qqq
|
||||||
|
10
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.6 Изучение передачи аргументов в виде ссылки на список и словарь
|
||||||
|
|
||||||
|
Была вызвана функция, которой в качестве аргументов была передана ссылка на список и словарь.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>e1=(-1,6);dd2={'a3':3,'a4':9}
|
||||||
|
>>>qqqq=slozh(*e1,**dd2)
|
||||||
|
>>>qqqq
|
||||||
|
17
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.7 Изучение функции, в которой в качестве аргумента присутствует кортеж неопределенного размера
|
||||||
|
|
||||||
|
Была создана функция, где изначально не определено количество аргументов. Все переданные переменные в функцию, собираются в кортеж, доступный внутри функции.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def func4(*kort7):
|
||||||
|
"""Произвольное число аргументов в составе кортежа"""
|
||||||
|
smm=0
|
||||||
|
for elt in kort7:
|
||||||
|
smm+=elt
|
||||||
|
return smm
|
||||||
|
|
||||||
|
|
||||||
|
>>>func4(-1,2) #Обращение к функции с 2 аргументами
|
||||||
|
1
|
||||||
|
>>>func4(-1,2,0,3,6) #Обращение к функции с 5 аргументами
|
||||||
|
10
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.8 Изучение функции, с неопределенным количеством аргументов
|
||||||
|
|
||||||
|
Была создана функция где изначально есть два аргумента, а далее не определено количество аргументов. Все переданные переменные в функцию, собираются в кортеж, доступный внутри функции. Также была создана функция, где переданные аргументы собираются в словарь.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def func4(a,b=7,*kort7): #Аргументы: a-позиционный, b- по умолчанию + кортеж
|
||||||
|
"""Кортеж - сборка аргументов - должен быть последним!"""
|
||||||
|
smm=0
|
||||||
|
for elt in kort7:
|
||||||
|
smm+=elt
|
||||||
|
return a*smm+b
|
||||||
|
|
||||||
|
|
||||||
|
>>>func4(-1,2,0,3,6)
|
||||||
|
-7
|
||||||
|
>>>def func5(**slovar):
|
||||||
|
print(slovar)
|
||||||
|
>>>func5(a=5, n=8, m=30)
|
||||||
|
{'a': 5, 'n': 8, 'm': 30}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4.9 Изучение изменения обьектов внутри функции
|
||||||
|
|
||||||
|
Были созданы функции, внутри которых передаваемый аргумент как-либо был изменен, и после применения функции, просмотрено значение переменных. Числовая переменная осталась такой же (а созданная внутри функции переменная "a" не имела связи с созданной "а" вне функции), какой была задана, элемент списка изменился, а при попытке передать в функцию кортеж - выщда ошибка, так как передавалась можно сказать ссылка на кортеж и была попытка его изменить.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def func3(b):
|
||||||
|
a=5*b+67
|
||||||
|
|
||||||
|
|
||||||
|
>>>a #Переменная не изменилась
|
||||||
|
90
|
||||||
|
>>>sps1=[1,2,3,4] #Список – изменяемый тип объекта
|
||||||
|
>>>def func2(sps):
|
||||||
|
sps[1]=99
|
||||||
|
|
||||||
|
|
||||||
|
>>>func2(sps1)
|
||||||
|
>>>print(sps1) #Элемент списка изменился
|
||||||
|
[1, 99, 3, 4]
|
||||||
|
>>>kort=(1,2,3,4) #Кортеж – неизменяемый тип объекта
|
||||||
|
>>>func2(kort)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#146>", line 1, in <module>
|
||||||
|
func2(kort)
|
||||||
|
File "<pyshell#139>", line 2, in func2
|
||||||
|
sps[1]=99
|
||||||
|
TypeError: 'tuple' object does not support item assignment
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5 Изучение специальных типов пользовательских функций
|
||||||
|
|
||||||
|
Были изучены и созданы анонимные функции и функции-генераторы.
|
||||||
|
|
||||||
|
## 5.1 Изучение анонимных функций
|
||||||
|
|
||||||
|
Были созданы и применены функции без имени без аргументов, с двумя аргументами и с необязательным аргументом.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import math
|
||||||
|
>>>anfun1=lambda: 1.5+math.log10(17.23) #Анонимная функция без аргументов
|
||||||
|
>>>anfun1() # Обращение к объекту-функции
|
||||||
|
2.7362852774480286
|
||||||
|
>>>anfun2=lambda a,b : a+math.log10(b) #Анонимная функция с 2 аргументами
|
||||||
|
>>>anfun2(17,234)
|
||||||
|
19.369215857410143
|
||||||
|
>>>anfun3=lambda a,b=234: a+math.log10(b) #Функция с необязательным вторым аргументом
|
||||||
|
>>>anfun3(100)
|
||||||
|
102.36921585741014
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5.2 Изучение функции-генератора
|
||||||
|
|
||||||
|
Была создана функция-генератор, которая производит последовательность чисел. Она была выведена с помощью цикла for, а также генерирующиеся значения были выведены поотдельности, с помощью метода __next__.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def func5(diap,shag):
|
||||||
|
""" Итератор, возвращающий значения
|
||||||
|
из диапазона от 1 до diap с шагом shag"""
|
||||||
|
for j in range(1,diap+1,shag):
|
||||||
|
yield j
|
||||||
|
|
||||||
|
|
||||||
|
>>>for mm in func5(7,3):
|
||||||
|
print(mm)
|
||||||
|
|
||||||
|
|
||||||
|
1
|
||||||
|
4
|
||||||
|
7
|
||||||
|
>>>alp=func5(7,3)
|
||||||
|
>>>print(alp.__next__())
|
||||||
|
1
|
||||||
|
>>>print(alp.__next__())
|
||||||
|
4
|
||||||
|
>>>print(alp.__next__())
|
||||||
|
7
|
||||||
|
>>>print(alp.__next__()) #На данном этапе, сообщается о том, что больше нет значений для выдачи.
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#165>", line 1, in <module>
|
||||||
|
print(alp.__next__())
|
||||||
|
StopIteration
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6 Изучение обьектов в функциях
|
||||||
|
|
||||||
|
Были изучены локальные и глобальные обьекты, а также смоделирована система управления.
|
||||||
|
|
||||||
|
## 6.1 Изучение работы с глобальными и локальными обьектами
|
||||||
|
|
||||||
|
Была создана функция, внутри которой уже существующей в глобальном пространстве переменной было присвоено определенное новое значение. При выполнении функции глобальная переменная не изменялась. Далее внутри созданной функции была попытка напечатать переменную, которой не существует в пространстве имен функции. Также была создана функция, внутри которой была обьявлена переменная как глобальная и после этого она была изменена внутри функции, что изменило ее в глобальном пространстве.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>glb=10
|
||||||
|
>>>def func7(arg):
|
||||||
|
loc1=15
|
||||||
|
glb=8
|
||||||
|
return loc1*arg
|
||||||
|
|
||||||
|
|
||||||
|
>>>res=func7(glb) #Для получения результата здесь использовалось значение переменной glb=10, то есть глобальной переменной, потому что именно она была передана в arg, который использовался в вычислениях.
|
||||||
|
>>>res
|
||||||
|
150
|
||||||
|
>>>glb #Значение переменной не изменилось, так как это глобальная переменная и вне функции она не переопределялась.
|
||||||
|
10
|
||||||
|
>>>def func8(arg):
|
||||||
|
loc1=15
|
||||||
|
print(glb)
|
||||||
|
glb=8
|
||||||
|
return loc1*arg
|
||||||
|
|
||||||
|
|
||||||
|
>>>res=func8(glb) #В данном случае выведется ошибка, так как до функции print внутри пространства имен функции не существует переменной glb
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#178>", line 1, in <module>
|
||||||
|
res=func8(glb)
|
||||||
|
File "<pyshell#177>", line 3, in func8
|
||||||
|
print(glb)
|
||||||
|
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
|
||||||
|
>>>glb=11
|
||||||
|
>>>def func7(arg):
|
||||||
|
loc1=15
|
||||||
|
global glb
|
||||||
|
print(glb)
|
||||||
|
glb=8
|
||||||
|
return loc1*arg
|
||||||
|
|
||||||
|
|
||||||
|
>>>res=func7(glb)
|
||||||
|
11
|
||||||
|
>>>glb #В этом случае значение переменной меняется, так как внутри функции обьявляется именно глобальная переменная glb.
|
||||||
|
8
|
||||||
|
>>>res #Однако в виде arg мы передали именно значение glb равное 11, поэтому как аргумент будет использоваться именно это значение, хоть сама переменная glb и была изменена.
|
||||||
|
165
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6.2 Изучение нахождения локальных и глобальных обьектов
|
||||||
|
|
||||||
|
Были выведены локальные и глобальные обьекты в глобальном пространстве видимости и также внутри функции.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>globals().keys()
|
||||||
|
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'al', 'glb', 'func7', 'res', 'func8'])
|
||||||
|
>>>locals().keys() #В данном случае отличий не будет, так как локализация обьектов запрашивается в глобальной области видимости.
|
||||||
|
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'al', 'glb', 'func7', 'res', 'func8'])
|
||||||
|
>>>def func8(arg):
|
||||||
|
loc1=15
|
||||||
|
glb=8
|
||||||
|
print(globals().keys()) #Перечень глобальных объектов «изнутри» функции
|
||||||
|
print(locals().keys()) #Перечень локальных объектов «изнутри» функции
|
||||||
|
return loc1*arg
|
||||||
|
|
||||||
|
|
||||||
|
>>>hh=func8(glb) #В этом случае глобальные обьекты остались те же, а вот место локализации теперь - это функция, и в ней существуют три локальных обьекта.
|
||||||
|
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'al', 'glb', 'func7', 'res', 'func8'])
|
||||||
|
dict_keys(['arg', 'loc1', 'glb'])
|
||||||
|
'glb' in globals().keys()
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6.3 Изучение глобальных и локальных обьектов внутри вложенных функций
|
||||||
|
|
||||||
|
Были выведены глобальные и локальные обьекты внутри функции и внутри вложенной в нее функции. Можно следать вывод, что созданные переменные во вложенной функции не будут доступны для той функции, в которую вложена данная функция, так как в списке локальных обьектов в основной функции их нет. То есть они существуют только в пространстве вложенной функции. Так же и с обьектами основной функции - их не существует для вложенной функции. Сама же основная функция становится локальным обьектом, а вот вложенная функция как обьект существует только внутри основной функции.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def func9(arg2,arg3):
|
||||||
|
def func9_1(arg1):
|
||||||
|
loc1=15
|
||||||
|
glb1=8
|
||||||
|
print('glob_func9_1:',globals().keys())
|
||||||
|
print('locl_func9_1:',locals().keys())
|
||||||
|
return loc1*arg1
|
||||||
|
loc1=5
|
||||||
|
glb=func9_1(loc1)
|
||||||
|
print('loc_func9:',locals().keys())
|
||||||
|
print('glob_func9:',globals().keys())
|
||||||
|
return arg2+arg3*glb
|
||||||
|
|
||||||
|
|
||||||
|
>>>kk=func9(10,1)
|
||||||
|
glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'al', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
|
||||||
|
locl_func9_1: dict_keys(['arg1', 'loc1', 'glb1'])
|
||||||
|
loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb'])
|
||||||
|
glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'al', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6.4 Изучение моделирования системы управления
|
||||||
|
|
||||||
|
Была смоделирована система управления, состоящую из реального двигателя, тахогенератора и зоны нечувствительности (их модели представляются пользовательскими функциями). На вход системы подается синусоидальный сигнал, который проходит через отрицательную обратную связь. Модель реального двигателя и тахогенератора представлены интеграторами и усилителями, а зона нечувствительности ограничивает значения выходного сигнала. В результате работы программы вычисляется и выводится список значений, представляющих выходной сигнал системы.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>znach=input('k1,T,k2,Xm,A,F,N=').split(',')
|
||||||
|
k1,T,k2,Xm,A,F,N=0.5,35,0.6,5,1000,5,15
|
||||||
|
>>>k1=float(znach[0])
|
||||||
|
>>>T=float(znach[1])
|
||||||
|
>>>k2=float(znach[2])
|
||||||
|
>>>Xm=float(znach[3])
|
||||||
|
>>>A=float(znach[4])
|
||||||
|
>>>F=float(znach[5])
|
||||||
|
>>>N=int(znach[6])
|
||||||
|
>>>import math
|
||||||
|
>>>vhod=[]
|
||||||
|
>>>for i in range(N):
|
||||||
|
vhod.append(A*math.sin((2*i*math.pi)/F))
|
||||||
|
>>>vhod
|
||||||
|
[0.0, 951.0565162951535, 587.7852522924733, -587.785252292473, -951.0565162951536, -2.4492935982947065e-13, 951.0565162951535, 587.7852522924734, -587.7852522924728, -951.0565162951538, -4.898587196589413e-13, 951.0565162951528, 587.7852522924736, -587.7852522924726, -951.0565162951538]
|
||||||
|
>>>def realdvig(xtt,kk1,TT,yti1,ytin1):
|
||||||
|
#Модель реального двигателя
|
||||||
|
yp=kk1*xtt #усилитель
|
||||||
|
yti1=yp+yti1 #Интегратор
|
||||||
|
ytin1=(yti1+TT*ytin1)/(TT+1)
|
||||||
|
return [yti1,ytin1]
|
||||||
|
|
||||||
|
>>>def tahogen(xtt,kk2,yti2):
|
||||||
|
#Модель тахогенератора
|
||||||
|
yp=kk2*xtt #усилитель
|
||||||
|
yti2=yp+yti2 #интегратор
|
||||||
|
return yti2
|
||||||
|
|
||||||
|
>>>def nechus(xtt,gran):
|
||||||
|
#зона нечувствительности
|
||||||
|
if xtt<gran and xtt>(-gran):
|
||||||
|
ytt=0
|
||||||
|
elif xtt>=gran:
|
||||||
|
ytt=xtt-gran
|
||||||
|
elif xtt<=(-gran):
|
||||||
|
ytt=xtt+gran
|
||||||
|
return ytt
|
||||||
|
|
||||||
|
>>>yi1=0;yin1=0;yi2=0
|
||||||
|
>>>vyhod=[]
|
||||||
|
>>>for xt in vhod:
|
||||||
|
xt1=xt-yi2 #отрицательная обратная связь
|
||||||
|
[yi1,yin1]=realdvig(xt1,k1,T,yi1,yin1)
|
||||||
|
yi2=tahogen(yin1,k2,yi2)
|
||||||
|
yt=nechus(yin1,Xm)
|
||||||
|
vyhod.append(yt)
|
||||||
|
|
||||||
|
|
||||||
|
>>>print('y=',vyhod)
|
||||||
|
y= [0, 8.209118281877132, 29.104924685415277, 40.86232427117668, 38.3075414151359, 34.68635884409398, 42.90679739719954, 57.19526562043458, 60.53754513466764, 47.64611630565597, 31.742316122264157, 25.812753880749888, 24.278160244795345, 10.44509996519298, -10.518946273258612]
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 7 Завершение работы в IDLE
|
||||||
|
|
||||||
|
Был завершен сеанс в среде IDLE.
|
||||||
|
|
||||||
|
|
||||||
82
TEMA7/task.md
Обычный файл
@@ -0,0 +1,82 @@
|
|||||||
|
# Общее контрольное задание по теме 7
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Общее контрольное задание.
|
||||||
|
• Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т.
|
||||||
|
• Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.
|
||||||
|
• Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х
|
||||||
|
Y=b1+b2*X
|
||||||
|
и имеющую аргументы b1, b2 и X.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def signal_zaderzka(vhod, zaderzka, vihod):
|
||||||
|
return vhod-zaderzka if len(vihod)>=zaderzka else 0
|
||||||
|
|
||||||
|
>>>t_zaderzka = 3
|
||||||
|
>>>vihod = []
|
||||||
|
>>>vhod = [1, 2, 3, 4, 5]
|
||||||
|
>>>for i in vhod:
|
||||||
|
vihod = vihod + [signal_zaderzka(i, t_zaderzka, vihod)]
|
||||||
|
|
||||||
|
>>>def signal_zaderzka(vhod, zaderzka, vihod):
|
||||||
|
return vhod-zaderzka if len(vihod)>=zaderzka else 0
|
||||||
|
|
||||||
|
>>>zaderzka = 3
|
||||||
|
>>>vihod = []
|
||||||
|
>>>vhod = [1, 2, 3, 4, 5]
|
||||||
|
>>>for i in vhod:
|
||||||
|
vihod = vihod + [signal_zaderzka(i, zaderzka, vihod)]
|
||||||
|
|
||||||
|
>>>print("входной сигнал: ", vhod, "выходной сигнал: ", vihod)
|
||||||
|
входной сигнал: [1, 2, 3, 4, 5] выходной сигнал: [0, 0, 0, 1, 2]
|
||||||
|
```
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>def histogram(data, num_bins):
|
||||||
|
"""Вычисляет и выводит гистограмму в виде таблицы, возвращает bins и counts."""
|
||||||
|
min_val, max_val = min(data), max(data)
|
||||||
|
bin_width = (max_val - min_val) / num_bins
|
||||||
|
bins = [min_val + i * bin_width for i in range(num_bins + 1)] #список границ интервалов
|
||||||
|
counts = []
|
||||||
|
for i in range(num_bins):
|
||||||
|
count = 0
|
||||||
|
for x in data:
|
||||||
|
if bins[i] <= x < bins[i+1] or (x == max_val and i == num_bins - 1):
|
||||||
|
count += 1
|
||||||
|
counts.append(count)
|
||||||
|
|
||||||
|
print("Гистограмма:")
|
||||||
|
for i in range(num_bins):
|
||||||
|
print(f"Интервал: [{bins[i]:.2f}, {bins[i+1]:.2f}], Элементов: {int(counts[i])}")
|
||||||
|
|
||||||
|
return bins, counts
|
||||||
|
|
||||||
|
>>>import random
|
||||||
|
|
||||||
|
>>>data = [random.gauss(0, 1) for _ in range(1000)]
|
||||||
|
>>>num_bins = 10
|
||||||
|
>>>bins, counts = histogram(data, num_bins)
|
||||||
|
Гистограмма:
|
||||||
|
Интервал: [-2.97, -2.30], Элементов: 7
|
||||||
|
Интервал: [-2.30, -1.62], Элементов: 43
|
||||||
|
Интервал: [-1.62, -0.94], Элементов: 118
|
||||||
|
Интервал: [-0.94, -0.26], Элементов: 231
|
||||||
|
Интервал: [-0.26, 0.42], Элементов: 266
|
||||||
|
Интервал: [0.42, 1.10], Элементов: 174
|
||||||
|
Интервал: [1.10, 1.78], Элементов: 122
|
||||||
|
Интервал: [1.78, 2.46], Элементов: 30
|
||||||
|
Интервал: [2.46, 3.13], Элементов: 8
|
||||||
|
Интервал: [3.13, 3.81], Элементов: 1
|
||||||
|
```
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>anon = lambda b1, b2, X: b1+b2*X
|
||||||
|
>>>Y = anon(1,2,3)
|
||||||
|
>>>Y
|
||||||
|
7
|
||||||
|
```
|
||||||
55
TEMA7/test.md
Обычный файл
@@ -0,0 +1,55 @@
|
|||||||
|
## ИКЗ по теме 7
|
||||||
|
Добровольска Елизавета
|
||||||
|
А-02-23
|
||||||
|
Вариант 16
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Разработайте функцию с 2 аргументами, которая для заданного словаря (аргумент функции) с любыми ключами и с числовыми значениями создаёт новый словарь с теми же ключами и со значениями, равными синусам от значений из входного словаря, и записывает новый словарь в бинарный файл с заданным именем (аргумент функции). Проверьте функцию на примере двух разных входных словарей.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
import math
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
def slov_sin(input_dict, filename):
|
||||||
|
new_dict = {key: math.sin(value) for key, value in input_dict.items()}
|
||||||
|
with open(filename, 'wb') as f:
|
||||||
|
pickle.dump(new_dict, f)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
dict1 = {'a': 0, 'b': math.pi / 2, 'c': math.pi, 'd': 3 * math.pi / 2}
|
||||||
|
file1 = 'sin_values_1.bin'
|
||||||
|
slov_sin(dict1, file1)
|
||||||
|
|
||||||
|
|
||||||
|
with open(file1, 'rb') as f:
|
||||||
|
loaded_dict1 = pickle.load(f)
|
||||||
|
print(f"Исходный словарь 1: {dict1}")
|
||||||
|
print(f"Сохраненный и загруженный словарь 1: {loaded_dict1}")
|
||||||
|
print("-" * 30)
|
||||||
|
|
||||||
|
|
||||||
|
dict2 = {'x': 1.0, 'y': 2.0, 'z': -0.5}
|
||||||
|
file2 = 'sin_values_2.bin'
|
||||||
|
slov_sin(dict2, file2)
|
||||||
|
|
||||||
|
with open(file2, 'rb') as f:
|
||||||
|
loaded_dict2 = pickle.load(f)
|
||||||
|
print(f"Исходный словарь 2: {dict2}")
|
||||||
|
print(f"Сохраненный и загруженный словарь 2: {loaded_dict2}")
|
||||||
|
```
|
||||||
|
|
||||||
|
ВЫВОД:
|
||||||
|
|
||||||
|
```py
|
||||||
|
================== RESTART: C:/Users/u522-16/Downloads/gfg.py ==================
|
||||||
|
Исходный словарь 1: {'a': 0, 'b': 1.5707963267948966, 'c': 3.141592653589793, 'd': 4.71238898038469}
|
||||||
|
Сохраненный и загруженный словарь 1: {'a': 0.0, 'b': 1.0, 'c': 1.2246467991473532e-16, 'd': -1.0}
|
||||||
|
------------------------------
|
||||||
|
Исходный словарь 2: {'x': 1.0, 'y': 2.0, 'z': -0.5}
|
||||||
|
Сохраненный и загруженный словарь 2: {'x': 0.8414709848078965, 'y': 0.9092974268256817, 'z': -0.479425538604203}
|
||||||
|
```
|
||||||
|
|
||||||
2
TEMA8/MM0.py
Обычный файл
@@ -0,0 +1,2 @@
|
|||||||
|
import MM2
|
||||||
|
print('y=',MM2.vyhod)
|
||||||
23
TEMA8/MM1.py
Обычный файл
@@ -0,0 +1,23 @@
|
|||||||
|
def realdvig(xtt,kk1,TT,yti1,ytin1):
|
||||||
|
#Модель реального двигателя
|
||||||
|
yp=kk1*xtt #усилитель
|
||||||
|
yti1=yp+yti1 #Интегратор
|
||||||
|
ytin1=(yti1+TT*ytin1)/(TT+1)
|
||||||
|
return [yti1,ytin1]
|
||||||
|
|
||||||
|
def tahogen(xtt,kk2,yti2):
|
||||||
|
#Модель тахогенератора
|
||||||
|
yp=kk2*xtt #усилитель
|
||||||
|
yti2=yp+yti2 #интегратор
|
||||||
|
return yti2
|
||||||
|
|
||||||
|
def nechus(xtt,gran):
|
||||||
|
#зона нечувствительности
|
||||||
|
if xtt<gran and xtt>(-gran):
|
||||||
|
ytt=0
|
||||||
|
elif xtt>=gran:
|
||||||
|
ytt=xtt-gran
|
||||||
|
elif xtt<=(-gran):
|
||||||
|
ytt=xtt+gran
|
||||||
|
return ytt
|
||||||
|
|
||||||
23
TEMA8/MM2.py
Обычный файл
@@ -0,0 +1,23 @@
|
|||||||
|
znach=input('k1,T,k2,Xm,A,F,N=').split(',')
|
||||||
|
k1=float(znach[0])
|
||||||
|
T=float(znach[1])
|
||||||
|
k2=float(znach[2])
|
||||||
|
Xm=float(znach[3])
|
||||||
|
A=float(znach[4])
|
||||||
|
F=float(znach[5])
|
||||||
|
N=int(znach[6])
|
||||||
|
|
||||||
|
import math
|
||||||
|
vhod=[]
|
||||||
|
for i in range(N):
|
||||||
|
vhod.append(A*math.sin((2*i*math.pi)/F))
|
||||||
|
|
||||||
|
import MM1 as mod
|
||||||
|
yi1=0;yin1=0;yi2=0
|
||||||
|
vyhod=[]
|
||||||
|
for xt in vhod:
|
||||||
|
xt1=xt-yi2 #отрицательная обратная связь
|
||||||
|
[yi1,yin1]=mod.realdvig(xt1,k1,T,yi1,yin1)
|
||||||
|
yi2=mod.tahogen(yin1,k2,yi2)
|
||||||
|
yt=mod.nechus(yin1,Xm)
|
||||||
|
vyhod.append(yt)
|
||||||
16
TEMA8/Mo.py
Обычный файл
@@ -0,0 +1,16 @@
|
|||||||
|
def calculate_correlation(list1, list2):
|
||||||
|
n = min(len(list1), len(list2)) # Используем меньшую длину
|
||||||
|
sum_x = sum(list1[:n])
|
||||||
|
sum_y = sum(list2[:n])
|
||||||
|
sum_x_squared = sum(x**2 for x in list1[:n])
|
||||||
|
sum_y_squared = sum(y**2 for y in list2[:n])
|
||||||
|
sum_xy = sum(list1[i] * list2[i] for i in range(n))
|
||||||
|
|
||||||
|
numerator = n * sum_xy - sum_x * sum_y
|
||||||
|
denominator = math.sqrt((n * sum_x_squared - sum_x**2) * (n * sum_y_squared - sum_y**2))
|
||||||
|
|
||||||
|
if denominator == 0:
|
||||||
|
print("Предупреждение: Деление на ноль при вычислении корреляции.")
|
||||||
|
return None
|
||||||
|
|
||||||
|
return numerator / denominator
|
||||||
@@ -4,8 +4,6 @@ def alpha():
|
|||||||
return t
|
return t
|
||||||
|
|
||||||
def beta(q):
|
def beta(q):
|
||||||
print('****BETA****')
|
|
||||||
import math
|
import math
|
||||||
expi=q*math.pi
|
expi=q*math.pi
|
||||||
return math.exp(expi)
|
return math.exp(expi)
|
||||||
|
|
||||||
|
|||||||
8
TEMA8/Module1.py
Обычный файл
@@ -0,0 +1,8 @@
|
|||||||
|
def read_number_list(filename):
|
||||||
|
number_list = []
|
||||||
|
with open(filename, 'r') as file:
|
||||||
|
for line in file:
|
||||||
|
numbers = line.strip().split()
|
||||||
|
for num in numbers:
|
||||||
|
number_list.append(float(num))
|
||||||
|
return number_list
|
||||||
22
TEMA8/Module2.py
Обычный файл
@@ -0,0 +1,22 @@
|
|||||||
|
import math
|
||||||
|
|
||||||
|
def calculate_correlation(list1, list2):
|
||||||
|
if not list1 or not list2:
|
||||||
|
print("Ошибка: Один или оба списка пусты.")
|
||||||
|
return None
|
||||||
|
|
||||||
|
n = min(len(list1), len(list2)) # Используем меньшую длину
|
||||||
|
sum_x = sum(list1[:n])
|
||||||
|
sum_y = sum(list2[:n])
|
||||||
|
sum_x_squared = sum(x**2 for x in list1[:n])
|
||||||
|
sum_y_squared = sum(y**2 for y in list2[:n])
|
||||||
|
sum_xy = sum(list1[i] * list2[i] for i in range(n))
|
||||||
|
|
||||||
|
numerator = n * sum_xy - sum_x * sum_y
|
||||||
|
denominator = math.sqrt((n * sum_x_squared - sum_x**2) * (n * sum_y_squared - sum_y**2))
|
||||||
|
|
||||||
|
if denominator == 0:
|
||||||
|
print("Предупреждение: Деление на ноль при вычислении корреляции.")
|
||||||
|
return None
|
||||||
|
|
||||||
|
return numerator / denominator
|
||||||
14
TEMA8/Module3.py
Обычный файл
@@ -0,0 +1,14 @@
|
|||||||
|
import Module1
|
||||||
|
import Module2
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
file1_name = input("Введите имя первого файла: ")
|
||||||
|
file2_name = input("Введите имя второго файла: ")
|
||||||
|
|
||||||
|
list1 = Module1.read_number_list(file1_name)
|
||||||
|
list2 = Module1.read_number_list(file2_name)
|
||||||
|
|
||||||
|
if list1 is not None and list2 is not None:
|
||||||
|
correlation = Module2.calculate_correlation(list1, list2)
|
||||||
|
if correlation is not None:
|
||||||
|
print(f"Коэффициент корреляции: {correlation:.3f}")
|
||||||
30
TEMA8/main.py
Обычный файл
@@ -0,0 +1,30 @@
|
|||||||
|
from signal_generator import generate_pulsed_signal
|
||||||
|
|
||||||
|
print("Генерация импульсного сигнала")
|
||||||
|
|
||||||
|
|
||||||
|
signal_amplitude = 10.0
|
||||||
|
signal_pulse_duration = 5
|
||||||
|
signal_period = 15
|
||||||
|
signal_num_samples = 100
|
||||||
|
output_file_name = "pulsed_signal.txt"
|
||||||
|
|
||||||
|
print(f"\nПараметры сигнала:")
|
||||||
|
print(f" Амплитуда: {signal_amplitude}")
|
||||||
|
print(f" Продолжительность импульса: {signal_pulse_duration} отсчетов")
|
||||||
|
print(f" Период (импульс+пауза): {signal_period} отсчетов")
|
||||||
|
print(f" Общее число отсчетов: {signal_num_samples}")
|
||||||
|
print(f" Файл для записи: {output_file_name}")
|
||||||
|
|
||||||
|
generated_signal = generate_pulsed_signal(
|
||||||
|
signal_amplitude,
|
||||||
|
signal_pulse_duration,
|
||||||
|
signal_period,
|
||||||
|
signal_num_samples,
|
||||||
|
output_file_name
|
||||||
|
)
|
||||||
|
|
||||||
|
print(f"\nСигнал успешно сгенерирован и записан в файл '{output_file_name}'.")
|
||||||
|
print("\nПервые 20 отсчетов сгенерированного сигнала (возвращенный список):")
|
||||||
|
print(generated_signal[:20])
|
||||||
|
print("\n(Полный список доступен в переменной 'generated_signal' и в файле).")
|
||||||
100
TEMA8/pulsed_signal.txt
Обычный файл
@@ -0,0 +1,100 @@
|
|||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
10.0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
299
TEMA8/report.md
Обычный файл
@@ -0,0 +1,299 @@
|
|||||||
|
# Отчет по лабораторной работе 8
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## 1 Открытие и настройка интерактивной оболочки IDLE
|
||||||
|
|
||||||
|
Была запущена интерактивная оболочка IDLE, указан рабочий каталог и импортированы необходимые модули.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import os
|
||||||
|
>>>os.chdir('C:\\Users\\u522-16\\Desktop\\tema8')
|
||||||
|
>>>os.getcwd() #Контролируем корректность установки текущего каталога
|
||||||
|
'C:\\Users\\u522-16\\Desktop\\tema8'
|
||||||
|
>>>import importlib
|
||||||
|
>>>import sys
|
||||||
|
```
|
||||||
|
## 2
|
||||||
|
|
||||||
|
## 2.1 Запуск модуля на выполнение
|
||||||
|
|
||||||
|
Был запущен созданный модуль на выполнение, введенное на запрос число было сохранено в переменную perm1, созданную в модуле. Были просмотрены атрибуты и тип модуля. Была неудачно произведена попытка заново запустить модуль на выполнение. После этого модуль был запущен еще раз с помощью метода reload. Была просмотрена переменная perm1 и установлено, что данная переменная была переопределена.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>import Mod1
|
||||||
|
Mod1:Введите значение = 5
|
||||||
|
Mod1:Значение perm1= 5
|
||||||
|
>>>type(Mod1)
|
||||||
|
<class 'module'>
|
||||||
|
>>>dir(Mod1)
|
||||||
|
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1']
|
||||||
|
>>>Mod1.perm1
|
||||||
|
'5'
|
||||||
|
>>>import Mod1
|
||||||
|
>>>imp.reload(Mod1)
|
||||||
|
Mod1:Введите значение = 3
|
||||||
|
Mod1:Значение perm1= 3
|
||||||
|
<module 'Mod1' from 'C:\\Users\\u522-16\\Desktop\\tema8\\Mod1.py'>
|
||||||
|
>>>Mod1.perm1
|
||||||
|
'3'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.2 Изучение удаления модуля из словаря
|
||||||
|
|
||||||
|
Был выведен словарь - значение атрибута sys.modules, среди которых был модуль Mod1. Далее этот модуль был удален, и снова изображен словарь, в котором Mod1 отсутствовал. Потом модуль был снова запущен и снова удален из словаря.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>print(sorted(sys.modules.keys()))
|
||||||
|
['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_compat_pickle', '_compression', '_datetime', '_distutils_hack', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_operator', '_pickle', '_queue', '_random', '_sha512', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_thread', '_tkinter', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'imp', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'pywin32_bootstrap', 'pywin32_system32', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'typing.io', 'typing.re', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
|
||||||
|
>>>sys.modules.pop('Mod1')
|
||||||
|
<module 'Mod1' from 'C:\\Users\\u522-16\\Desktop\\tema8\\Mod1.py'>
|
||||||
|
>>>print(sorted(sys.modules.keys()))
|
||||||
|
['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_compat_pickle', '_compression', '_datetime', '_distutils_hack', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_operator', '_pickle', '_queue', '_random', '_sha512', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_thread', '_tkinter', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'imp', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'pywin32_bootstrap', 'pywin32_system32', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'typing.io', 'typing.re', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
|
||||||
|
>>>import Mod1
|
||||||
|
Mod1:Введите значение = 9
|
||||||
|
Mod1:Значение perm1= 9
|
||||||
|
>>>sys.modules.pop('Mod1')
|
||||||
|
<module 'Mod1' from 'C:\\Users\\u522-16\\Desktop\\tema8\\Mod1.py'>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.3 Изучение запуска модуля с помощью exec
|
||||||
|
|
||||||
|
Модуль был запущен на выполнение с помощью функции exec, которая читает код. Далее трижды было введено значение perm1, и выведено на экран.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>exec(open('Mod1.py').read())
|
||||||
|
Mod1:Введите значение = 8
|
||||||
|
Mod1:Значение perm1= 8
|
||||||
|
>>>exec(open('Mod1.py', encoding='utf-8').read()) #Здесь указана кодировка, чтобы в консоли выводился текст на кириллице.
|
||||||
|
Mod1:Введите значение = 4
|
||||||
|
Mod1:Значение perm1= 4
|
||||||
|
>>>perm1
|
||||||
|
'4'
|
||||||
|
>>>exec(open('Mod1.py', encoding='utf-8').read())
|
||||||
|
Mod1:Введите значение = 8
|
||||||
|
Mod1:Значение perm1= 8
|
||||||
|
>>>perm1
|
||||||
|
'8'
|
||||||
|
>>>exec(open('Mod1.py', encoding='utf-8').read())
|
||||||
|
Mod1:Введите значение = 9
|
||||||
|
Mod1:Значение perm1= 9
|
||||||
|
>>>perm1
|
||||||
|
'9'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.4 Изучение запуска модуля с помощью from … import …
|
||||||
|
|
||||||
|
Была импортирована лишь часть модуля, просмотрены обьекты, а так же выведено значение переменной perm1.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>from Mod1 import perm1
|
||||||
|
Mod1:Введите значение = 5
|
||||||
|
Mod1:Значение perm1= 5
|
||||||
|
>>>dir()
|
||||||
|
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'fg', 'imp', 'importlib', 'os', 'perm1', 'summa', 'sys']
|
||||||
|
>>>perm1
|
||||||
|
'5'
|
||||||
|
```
|
||||||
|
|
||||||
|
Создан модуль с двумя функциями и изначально импортирована одна функция из этого модуля. Просмотрено значение переменной g. Просмотрены обьекты. Была произведена попытка вызова неимпортированной функции из модуля 2. Под псевдонимом была импортирована вторая функция из модуля и вызвана эта функция. Далее функции были удалены, потом обе снова импортированы одной инструкцией. Далее был испортирован весь модуль и применена его функция.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>from Mod2 import beta
|
||||||
|
>>>g=beta(2)
|
||||||
|
>>>g
|
||||||
|
535.4916555247646
|
||||||
|
>>>dir()
|
||||||
|
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'beta', 'fg', 'g', 'imp', 'importlib', 'os', 'perm1', 'summa', 'sys']
|
||||||
|
>>>alpha()
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#42>", line 1, in <module>
|
||||||
|
alpha()
|
||||||
|
NameError: name 'alpha' is not defined
|
||||||
|
>>>from Mod2 import alpha as al
|
||||||
|
>>>al()
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=4
|
||||||
|
'4'
|
||||||
|
>>>del al,beta
|
||||||
|
>>>from Mod2 import alpha as al, beta as bt
|
||||||
|
>>>del al
|
||||||
|
>>>del bt
|
||||||
|
>>>from Mod2 import * #Звездочка означает, что импортируется весь модуль, а не конкретные функции.
|
||||||
|
tt=alpha() #На запрос введите значение 0.12
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=0.12
|
||||||
|
>>>uu=beta(float(tt))
|
||||||
|
>>>uu
|
||||||
|
1.4578913609506803
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3
|
||||||
|
|
||||||
|
## 3.1
|
||||||
|
|
||||||
|
Был создан еще один модуль Mod0, в котором вызываются модуль 1 и функции из модуля 2. Также выведены значения обьектов, созданных во время выполнения программы.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>sys.modules.pop('Mod1')
|
||||||
|
>>>sys.modules.pop('Mod2')
|
||||||
|
>>>import Mod0
|
||||||
|
Mod1:Введите значение = 5
|
||||||
|
Mod1:Значение perm1= 5
|
||||||
|
perm1= 5
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=8
|
||||||
|
tt= 8
|
||||||
|
qq= 82226315585.59491
|
||||||
|
>>>Mod0.tt;Mod0.qq;Mod0.Mod1.perm1
|
||||||
|
'8'
|
||||||
|
82226315585.59491
|
||||||
|
'5'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.2 Создание модулей для реализации программы моделирования системы управления
|
||||||
|
|
||||||
|
Были созданы модули MM1 - с функциями реализующими реальный двигатель, тахогенератор и нелинейное звено; MM2 - с инструкциями, обеспечивающими ввод параметров задачи, формирование входного сигнала, импорт модуля ММ1 и реализацию модели при расчете выходного сигнала; MM0 - содержащую импорт модуля MM2 и печатающую получившийся выходной сигнал. Был вызван модуль MM0.
|
||||||
|
|
||||||
|
```py
|
||||||
|
================= RESTART: C:\Users\Лиза\OneDrive\Desktop\python-labs\TEMA8\MM0.py =================
|
||||||
|
k1,T,k2,Xm,A,F,N=0.5,35,0.6,5,1000,5,15
|
||||||
|
y= [0, 8.209118281877132, 29.104924685415277, 40.86232427117668, 38.3075414151359, 34.68635884409398, 42.90679739719954, 57.19526562043458, 60.53754513466764, 47.64611630565597, 31.742316122264157, 25.812753880749888, 24.278160244795345, 10.44509996519298, -10.518946273258612]
|
||||||
|
```py
|
||||||
|
|
||||||
|
## 3.3 Изучение области действия обьектов в модулях
|
||||||
|
|
||||||
|
Была изучена область действия обьектов в модулях. Исходя из примеров, приведенных ниже, можно сказать, что обьекты входящие в один модуль будут локализованы в этом модуле и доступны в нем. К переменным из другого модуля, даже импортированного в главный (выполняемый) модуль, прямого доступа не будет.
|
||||||
|
|
||||||
|
## 3.3.1 Изучение области действия обьектов в модулях (пример 1)
|
||||||
|
|
||||||
|
Внутрь модуля Mod2 в функцию alpha был добавлен вызов функции beta.
|
||||||
|
|
||||||
|
```
|
||||||
|
def alpha():
|
||||||
|
print('****ALPHA****')
|
||||||
|
t=input('Значение t=')
|
||||||
|
n = beta(6)
|
||||||
|
print(n)
|
||||||
|
return t
|
||||||
|
```
|
||||||
|
Далее запущен модуль и вызвана функция alpha. Можно заметить, что инструкции успешно выполнились.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>>alpha()
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=9
|
||||||
|
153552935.39544657
|
||||||
|
'9'
|
||||||
|
```
|
||||||
|
Далее в модуле в функции beta был добавлен вызов функции alpha.
|
||||||
|
|
||||||
|
```py
|
||||||
|
def beta(q):
|
||||||
|
import math
|
||||||
|
expi=q*math.pi
|
||||||
|
alpha()
|
||||||
|
return math.exp(expi)
|
||||||
|
```
|
||||||
|
|
||||||
|
Функция beta была успешно вызвана
|
||||||
|
|
||||||
|
```
|
||||||
|
beta(6)
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=9
|
||||||
|
153552935.39544657
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.3.2 Изучение области действия обьектов в модулях (пример 2)
|
||||||
|
|
||||||
|
В модуль Mod0 была добавлена функция печати переменных t и expi, которые есть в Mod2.
|
||||||
|
|
||||||
|
```py
|
||||||
|
#Модуль Mod0
|
||||||
|
import Mod1
|
||||||
|
print('perm1=',Mod1.perm1)
|
||||||
|
from Mod2 import alpha as al
|
||||||
|
tt=al()
|
||||||
|
print('tt=',tt)
|
||||||
|
from Mod2 import beta
|
||||||
|
qq=beta(float(tt))
|
||||||
|
print('qq=',qq)
|
||||||
|
print(t, expi)
|
||||||
|
```
|
||||||
|
При запуске модуля на моменте печати этих переменных была выдана ошибка.
|
||||||
|
|
||||||
|
```py
|
||||||
|
Mod1:Введите значение = 5
|
||||||
|
Mod1:Значение perm1= 5
|
||||||
|
perm1= 5
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=7
|
||||||
|
tt= 7
|
||||||
|
qq= 3553321280.847041
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "C:\Users\Лиза\OneDrive\Desktop\python-labs\TEMA8\Mod0.py", line 10, in <module>
|
||||||
|
print(t, expi)
|
||||||
|
NameError: name 't' is not defined. Did you mean: 'tt'?
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.3.3 Изучение области действия обьектов в модулях (пример 3)
|
||||||
|
|
||||||
|
В модуле Mod0 были добавлены инструкции, где переменная perm1 была увеличена в 3 раза и напечатана
|
||||||
|
|
||||||
|
```py
|
||||||
|
#Модуль Mod0
|
||||||
|
import Mod1
|
||||||
|
print('perm1=',Mod1.perm1)
|
||||||
|
from Mod2 import alpha as al
|
||||||
|
tt=al()
|
||||||
|
print('tt=',tt)
|
||||||
|
from Mod2 import beta
|
||||||
|
qq=beta(float(tt))
|
||||||
|
print('qq=',qq)
|
||||||
|
perm1 = Mod1.perm1*3
|
||||||
|
print("perm1*3= ", perm1)
|
||||||
|
```
|
||||||
|
|
||||||
|
При запуске модуля напечаталась переменная perm1 умноженная на 3. Так как эта переменная класса строка, то строка была повторена трижды и сформирована новая строка.
|
||||||
|
|
||||||
|
```py
|
||||||
|
Mod1:Введите значение = 4
|
||||||
|
Mod1:Значение perm1= 4
|
||||||
|
perm1= 4
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=3
|
||||||
|
tt= 3
|
||||||
|
qq= 12391.647807916694
|
||||||
|
perm1*3= 444
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.3.4 Изучение области действия обьектов в модулях (пример 4)
|
||||||
|
|
||||||
|
В командной строке после выполнения главного модуля была произведена попытка изменить переменные perm1, tt, qq. В итоге tt и qq изменились, а при обращении к perm1 была выведена ошибка.
|
||||||
|
|
||||||
|
```py
|
||||||
|
================= RESTART: C:\Users\Лиза\OneDrive\Desktop\python-labs\TEMA8\Mod0.py ================
|
||||||
|
Mod1:Введите значение = 5
|
||||||
|
Mod1:Значение perm1= 5
|
||||||
|
perm1= 5
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=7
|
||||||
|
tt= 7
|
||||||
|
qq= 3553321280.847041
|
||||||
|
>>>perm1 = perm1*2
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#5>", line 1, in <module>
|
||||||
|
perm1 = perm1*2
|
||||||
|
NameError: name 'perm1' is not defined
|
||||||
|
>>>tt = tt*2
|
||||||
|
>>>tt
|
||||||
|
'77'
|
||||||
|
>>>qq = qq*2
|
||||||
|
>>>qq
|
||||||
|
7106642561.694082
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4 Завершение работы в IDLE
|
||||||
|
|
||||||
|
Был завершен сеанс в среде IDLE.
|
||||||
18
TEMA8/signal_generator.py
Обычный файл
@@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
def generate_pulsed_signal(amplitude, pulse_duration, period, num_samples, filename):
|
||||||
|
signal_data = []
|
||||||
|
|
||||||
|
for i in range(num_samples):
|
||||||
|
# Определяем находится ли текущий отсчет в фазе импульсаа
|
||||||
|
if (i % period) < pulse_duration:
|
||||||
|
signal_data.append(amplitude)
|
||||||
|
else:
|
||||||
|
signal_data.append(0) # Фаза паузы
|
||||||
|
|
||||||
|
# Запись сигнала в файлик
|
||||||
|
with open(filename, 'w') as f:
|
||||||
|
for sample in signal_data:
|
||||||
|
f.write(f"{sample}\n")
|
||||||
|
|
||||||
|
return signal_data
|
||||||
|
|
||||||
22
TEMA8/task.md
Обычный файл
@@ -0,0 +1,22 @@
|
|||||||
|
# Общее контрольное задание по теме 8
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Разработайте программу, состоящую из трех модулей:
|
||||||
|
- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу.
|
||||||
|
- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу.
|
||||||
|
- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. Затем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки.
|
||||||
|
Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Были созданы три модуля, реализующие инструкции задания. Запущен модуль 3 на выполнение.
|
||||||
|
|
||||||
|
```py
|
||||||
|
=============== RESTART: C:\Users\Лиза\OneDrive\Desktop\python-labs\TEMA8\Module3.py ===============
|
||||||
|
Введите имя первого файла: text1.txt
|
||||||
|
Введите имя второго файла: text2.txt
|
||||||
|
Коэффициент корреляции: 0.962
|
||||||
|
```
|
||||||
85
TEMA8/test.md
Обычный файл
@@ -0,0 +1,85 @@
|
|||||||
|
## ИКЗ по теме 8
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Разработайте функцию по заданию и на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов. Разработайте функцию с 5 аргументами, создающую отсчеты сигнала в виде последовательности импульсов с заданными параметрами: амплитуда, продолжительность импульса, период (импульс + пауза), число отсчетов (аргументы функции). Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Код модуля для генерации сигнала:
|
||||||
|
```py
|
||||||
|
def generate_pulsed_signal(amplitude, pulse_duration, period, num_samples, filename):
|
||||||
|
signal_data = []
|
||||||
|
|
||||||
|
for i in range(num_samples):
|
||||||
|
# Определяем находится ли текущий отсчет в фазе импульсаа
|
||||||
|
if (i % period) < pulse_duration:
|
||||||
|
signal_data.append(amplitude)
|
||||||
|
else:
|
||||||
|
signal_data.append(0) # Фаза паузы
|
||||||
|
|
||||||
|
# Запись сигнала в файлик
|
||||||
|
with open(filename, 'w') as f:
|
||||||
|
for sample in signal_data:
|
||||||
|
f.write(f"{sample}\n")
|
||||||
|
|
||||||
|
return signal_data
|
||||||
|
```
|
||||||
|
|
||||||
|
Основной модуль:
|
||||||
|
|
||||||
|
```py
|
||||||
|
from signal_generator import generate_pulsed_signal
|
||||||
|
|
||||||
|
print("Генерация импульсного сигнала")
|
||||||
|
|
||||||
|
|
||||||
|
signal_amplitude = 10.0
|
||||||
|
signal_pulse_duration = 5
|
||||||
|
signal_period = 15
|
||||||
|
signal_num_samples = 100
|
||||||
|
output_file_name = "pulsed_signal.txt"
|
||||||
|
|
||||||
|
print(f"\nПараметры сигнала:")
|
||||||
|
print(f" Амплитуда: {signal_amplitude}")
|
||||||
|
print(f" Продолжительность импульса: {signal_pulse_duration} отсчетов")
|
||||||
|
print(f" Период (импульс+пауза): {signal_period} отсчетов")
|
||||||
|
print(f" Общее число отсчетов: {signal_num_samples}")
|
||||||
|
print(f" Файл для записи: {output_file_name}")
|
||||||
|
|
||||||
|
generated_signal = generate_pulsed_signal(
|
||||||
|
signal_amplitude,
|
||||||
|
signal_pulse_duration,
|
||||||
|
signal_period,
|
||||||
|
signal_num_samples,
|
||||||
|
output_file_name
|
||||||
|
)
|
||||||
|
|
||||||
|
print(f"\nСигнал успешно сгенерирован и записан в файл '{output_file_name}'.")
|
||||||
|
print("\nПервые 20 отсчетов сгенерированного сигнала (возвращенный список):")
|
||||||
|
print(generated_signal[:20])
|
||||||
|
print("\n(Полный список доступен в переменной 'generated_signal' и в файле).")
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод в консоли:
|
||||||
|
|
||||||
|
Генерация импульсного сигнала
|
||||||
|
|
||||||
|
Параметры сигнала:
|
||||||
|
Амплитуда: 10.0
|
||||||
|
Продолжительность импульса: 5 отсчетов
|
||||||
|
Период (импульс+пауза): 15 отсчетов
|
||||||
|
Общее число отсчетов: 100
|
||||||
|
Файл для записи: pulsed_signal.txt
|
||||||
|
|
||||||
|
Сигнал успешно сгенерирован и записан в файл 'pulsed_signal.txt'.
|
||||||
|
|
||||||
|
Первые 20 отсчетов сгенерированного сигнала (возвращенный список):
|
||||||
|
[10.0, 10.0, 10.0, 10.0, 10.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.0, 10.0, 10.0, 10.0, 10.0]
|
||||||
|
|
||||||
|
(Полный список доступен в переменной 'generated_signal' и в файле).
|
||||||
1
TEMA8/text1.txt
Обычный файл
@@ -0,0 +1 @@
|
|||||||
|
1 2 3 4 7
|
||||||
1
TEMA8/text2.txt
Обычный файл
@@ -0,0 +1 @@
|
|||||||
|
6 7 8 9 10
|
||||||
20
TEMA9/M0.py
Обычный файл
@@ -0,0 +1,20 @@
|
|||||||
|
import matplotlib.pyplot as plt
|
||||||
|
from M2 import process_data_and_save_results
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print("--- Запуск главной программы M0 ---")
|
||||||
|
|
||||||
|
|
||||||
|
sps1_for_plot = process_data_and_save_results()
|
||||||
|
|
||||||
|
|
||||||
|
plt.figure(figsize=(10, 6))
|
||||||
|
plt.plot(sps1_for_plot, marker='.', linestyle='-', color='skyblue', label='SPS1 Values')
|
||||||
|
plt.title("График упорядоченного списка SPS1")
|
||||||
|
plt.xlabel("Индекс отсчета")
|
||||||
|
plt.ylabel("Значение элемента")
|
||||||
|
plt.grid(True)
|
||||||
|
plt.legend()
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
print("\n Программа завершена")
|
||||||
43
TEMA9/M1.py
Обычный файл
@@ -0,0 +1,43 @@
|
|||||||
|
import math
|
||||||
|
|
||||||
|
def process_tuples(tuple1, tuple2):
|
||||||
|
temp_list = []
|
||||||
|
for item in tuple1:
|
||||||
|
temp_list.append((item, 1))
|
||||||
|
for item in tuple2:
|
||||||
|
temp_list.append((item, 2))
|
||||||
|
|
||||||
|
temp_list.sort(key=lambda x: x[0])
|
||||||
|
|
||||||
|
sps1 = [item[0] for item in temp_list]
|
||||||
|
sps2 = [item[1] for item in temp_list]
|
||||||
|
|
||||||
|
return sps1, sps2
|
||||||
|
|
||||||
|
def calculate_stats(numeric_list):
|
||||||
|
n = len(numeric_list)
|
||||||
|
mean = sum(numeric_list) / n
|
||||||
|
|
||||||
|
min_val = min(numeric_list)
|
||||||
|
max_val = max(numeric_list)
|
||||||
|
|
||||||
|
|
||||||
|
sorted_list = sorted(numeric_list)
|
||||||
|
if n % 2 == 1:
|
||||||
|
median = sorted_list[n // 2]
|
||||||
|
else:
|
||||||
|
median = (sorted_list[n // 2 - 1] + sorted_list[n // 2]) / 2
|
||||||
|
if n <= 1:
|
||||||
|
std_dev = 0.0
|
||||||
|
else:
|
||||||
|
variance = sum((x - mean) ** 2 for x in numeric_list) / (n - 1)
|
||||||
|
std_dev = math.sqrt(variance)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"Среднее": mean,
|
||||||
|
"Наименьшее": min_val,
|
||||||
|
"Наибольшее": max_val,
|
||||||
|
"Медиана": median,
|
||||||
|
"Стандартное отклонение": std_dev
|
||||||
|
}
|
||||||
|
|
||||||
38
TEMA9/M2.py
Обычный файл
@@ -0,0 +1,38 @@
|
|||||||
|
import os
|
||||||
|
import pickle
|
||||||
|
from M1 import process_tuples, calculate_stats
|
||||||
|
|
||||||
|
def process_data_and_save_results():
|
||||||
|
filename = ""
|
||||||
|
|
||||||
|
while not os.path.exists(filename):
|
||||||
|
filename = input("Введите имя бинарного файла с данными (например, input_data.bin): ")
|
||||||
|
if not os.path.exists(filename):
|
||||||
|
print(f"Файл '{filename}' не найден. Попробуйте еще раз.")
|
||||||
|
|
||||||
|
|
||||||
|
with open(filename, 'rb') as f:
|
||||||
|
krt1 = pickle.load(f)
|
||||||
|
krt2 = pickle.load(f)
|
||||||
|
print(f"\nДанные успешно считаны из файла '{filename}'.")
|
||||||
|
print(f"KRT1 (первые 5 элементов): {krt1[:5]}")
|
||||||
|
print(f"KRT2 (первые 5 элементов): {krt2[:5]}")
|
||||||
|
|
||||||
|
sps1, sps2 = process_tuples(krt1, krt2)
|
||||||
|
print("\n--- Результаты функции 1 ---")
|
||||||
|
print(f"SPS1 (упорядоченный список элементов): {sps1[:10]}... (длина {len(sps1)})")
|
||||||
|
print(f"SPS2 (список происхождения элементов): {sps2[:10]}... (длина {len(sps2)})")
|
||||||
|
|
||||||
|
|
||||||
|
stats = calculate_stats(sps1)
|
||||||
|
print("\n--- Результаты функции 2 (для SPS1) ---")
|
||||||
|
for key, value in stats.items():
|
||||||
|
print(f"{key}: {value:.2f}")
|
||||||
|
|
||||||
|
output_filename = "Res22.txt"
|
||||||
|
with open(output_filename, 'w') as f:
|
||||||
|
for val1, val2 in zip(sps1, sps2):
|
||||||
|
f.write(f"{val1} {val2}\n")
|
||||||
|
print(f"\nРезультаты функции 1 записаны в файл '{output_filename}'.")
|
||||||
|
|
||||||
|
return sps1
|
||||||
16
TEMA9/MAIN_SAU.py
Обычный файл
@@ -0,0 +1,16 @@
|
|||||||
|
###main_SAU
|
||||||
|
|
||||||
|
prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь
|
||||||
|
from SAU import *
|
||||||
|
xx=[0]+[1]*20 #Входной сигнал – «ступенька»
|
||||||
|
SAUe=SAU(prm) # Создаём экземпляр класса
|
||||||
|
yt=[]
|
||||||
|
for xt in xx: # Прохождение входного сигнала
|
||||||
|
SAUe.zdn_zn(xt)
|
||||||
|
SAUe.model()
|
||||||
|
SAUe.otobraz()
|
||||||
|
yt.append(SAUe.ypr[1])
|
||||||
|
|
||||||
|
import pylab
|
||||||
|
pylab.plot(yt)
|
||||||
|
pylab.show()
|
||||||
20
TEMA9/Mod3.py
Обычный файл
@@ -0,0 +1,20 @@
|
|||||||
|
class Class1: #Объявление класса Class1 в модуле
|
||||||
|
def zad_zn(self,znach): # 1 Метод класса
|
||||||
|
self.data=znach # self - ссылка на экземпляр класса Class1
|
||||||
|
def otobrazh(self): # 2 Метод класса
|
||||||
|
print(self.data)#Отображение данных экземпляра
|
||||||
|
|
||||||
|
class Class2(Class1): #Class2 - наследник класса Class1
|
||||||
|
def otobrazh(self): # Метод класса Class2
|
||||||
|
print('значение=',self.data)#Отображение данных экземпляра
|
||||||
|
|
||||||
|
def otobrazh(objekt): #Объявление самостоятельной функции
|
||||||
|
print('значение объекта=',objekt)
|
||||||
|
|
||||||
|
class Class3(Class2): #Наследник класса Class2, а через него – и класса Class1
|
||||||
|
def __init__(self,znach): #Конструктор-вызывается при создании нового экземпляра класса
|
||||||
|
self.data=znach
|
||||||
|
def __add__(self,drug_zn): #Вызывается, когда экземпляр участвует в операции «+»
|
||||||
|
return Class3(self.data+drug_zn)
|
||||||
|
def zad_dr_zn(self,povtor): #А это - обычный метод
|
||||||
|
self.data*=povtor
|
||||||
Двоичные данные
TEMA9/Pic0.png
Обычный файл
|
После Ширина: | Высота: | Размер: 31 KiB |
90
TEMA9/Res22.txt
Обычный файл
@@ -0,0 +1,90 @@
|
|||||||
|
20 1
|
||||||
|
20 2
|
||||||
|
20 2
|
||||||
|
20 2
|
||||||
|
21 2
|
||||||
|
22 1
|
||||||
|
23 1
|
||||||
|
23 1
|
||||||
|
23 2
|
||||||
|
24 1
|
||||||
|
24 1
|
||||||
|
24 2
|
||||||
|
24 2
|
||||||
|
25 1
|
||||||
|
26 1
|
||||||
|
26 1
|
||||||
|
26 2
|
||||||
|
26 2
|
||||||
|
26 2
|
||||||
|
27 2
|
||||||
|
27 2
|
||||||
|
28 1
|
||||||
|
28 1
|
||||||
|
28 2
|
||||||
|
29 2
|
||||||
|
29 2
|
||||||
|
30 1
|
||||||
|
30 1
|
||||||
|
30 1
|
||||||
|
30 2
|
||||||
|
30 2
|
||||||
|
31 1
|
||||||
|
31 1
|
||||||
|
31 1
|
||||||
|
31 1
|
||||||
|
31 2
|
||||||
|
31 2
|
||||||
|
32 1
|
||||||
|
32 1
|
||||||
|
32 2
|
||||||
|
32 2
|
||||||
|
32 2
|
||||||
|
32 2
|
||||||
|
33 1
|
||||||
|
33 1
|
||||||
|
33 1
|
||||||
|
33 1
|
||||||
|
33 2
|
||||||
|
33 2
|
||||||
|
33 2
|
||||||
|
33 2
|
||||||
|
34 2
|
||||||
|
34 2
|
||||||
|
34 2
|
||||||
|
35 2
|
||||||
|
35 2
|
||||||
|
36 1
|
||||||
|
36 1
|
||||||
|
36 1
|
||||||
|
37 2
|
||||||
|
37 2
|
||||||
|
37 2
|
||||||
|
38 1
|
||||||
|
38 1
|
||||||
|
38 1
|
||||||
|
38 2
|
||||||
|
38 2
|
||||||
|
38 2
|
||||||
|
39 1
|
||||||
|
39 1
|
||||||
|
39 2
|
||||||
|
39 2
|
||||||
|
40 1
|
||||||
|
40 2
|
||||||
|
41 1
|
||||||
|
41 2
|
||||||
|
41 2
|
||||||
|
42 1
|
||||||
|
42 1
|
||||||
|
42 2
|
||||||
|
42 2
|
||||||
|
42 2
|
||||||
|
43 1
|
||||||
|
43 2
|
||||||
|
44 1
|
||||||
|
44 2
|
||||||
|
44 2
|
||||||
|
45 1
|
||||||
|
45 1
|
||||||
|
45 2
|
||||||
20
TEMA9/SAU.py
Обычный файл
@@ -0,0 +1,20 @@
|
|||||||
|
class SAU:
|
||||||
|
def __init__(self,zn_param):
|
||||||
|
self.param=zn_param
|
||||||
|
self.ypr=[0,0]
|
||||||
|
|
||||||
|
def zdn_zn(self,upr):
|
||||||
|
self.x=upr
|
||||||
|
|
||||||
|
def model(self):
|
||||||
|
def inerz(x,T,yy):
|
||||||
|
return (x+T*yy)/(T+1)
|
||||||
|
y0=self.x-self.ypr[1]*self.param[3] #Обр.связь с усилителем 2
|
||||||
|
y1=self.param[0]*y0 #Усилитель1
|
||||||
|
y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1
|
||||||
|
y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2
|
||||||
|
self.ypr[0]=y2
|
||||||
|
self.ypr[1]=y3
|
||||||
|
|
||||||
|
def otobraz(self):
|
||||||
|
print('y=',self.ypr[1])
|
||||||
16
TEMA9/TEST.py
Обычный файл
@@ -0,0 +1,16 @@
|
|||||||
|
import random
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
def create_binary_file(filename="input_data.bin", len1=40, len2=50, min_val=20, max_val=45):
|
||||||
|
krt1 = tuple(random.randint(min_val, max_val) for _ in range(len1))
|
||||||
|
krt2 = tuple(random.randint(min_val, max_val) for _ in range(len2))
|
||||||
|
|
||||||
|
with open(filename, 'wb') as f:
|
||||||
|
pickle.dump(krt1, f)
|
||||||
|
pickle.dump(krt2, f)
|
||||||
|
print(f"Бинарный файл '{filename}' создан с двумя кортежами.")
|
||||||
|
print(f"KRT1: {krt1[:5]}... (длина {len(krt1)})")
|
||||||
|
print(f"KRT2: {krt2[:5]}... (длина {len(krt2)})")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
create_binary_file()
|
||||||
Двоичные данные
TEMA9/input_data.bin
Обычный файл
Двоичные данные
TEMA9/pic0.png
Обычный файл
|
После Ширина: | Высота: | Размер: 34 KiB |
271
TEMA9/report.md
Обычный файл
@@ -0,0 +1,271 @@
|
|||||||
|
# Отчет по теме 9
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
|
||||||
|
## 1 Запуск интерактивной оболочки IDLE
|
||||||
|
|
||||||
|
Была запущена интерактивная оболочка IDLE.
|
||||||
|
|
||||||
|
## 2 Создание классов
|
||||||
|
|
||||||
|
## 2.1 Создание автономного класса
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> class Class1: #Объявление класса
|
||||||
|
... def zad_zn(self,znach): #Метод 1 класса1 – задание значения data
|
||||||
|
... self.data=znach # self - ссылка на экземпляр класса
|
||||||
|
... def otobrazh(self): # Метод 2 класса1
|
||||||
|
... print(self.data)#Отображение данных экземпляра класса
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> z1=Class1() #Создаём 1-й экземпляр класса
|
||||||
|
>>> z2=Class1() #Создаём 2-й экземпляр класса
|
||||||
|
>>> z1.zad_zn('экз.класса 1') #Обращение к методу класса у 1-го экз.
|
||||||
|
>>> z2.zad_zn(-632.453) #Обращение к методу класса у 2-го экз.
|
||||||
|
>>> z1.otobrazh() # Обращение ко второму методу класса
|
||||||
|
экз.класса 1
|
||||||
|
>>> z2.otobrazh()
|
||||||
|
-632.453
|
||||||
|
>>> z1.data='Новое значение атрибута у экз.1'
|
||||||
|
>>> z1.otobrazh()
|
||||||
|
Новое значение атрибута у экз.1
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.2 Создание класса-наследника
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> class Class2(Class1): #Class2 - наследник класса Class1
|
||||||
|
... def otobrazh(self): # Метод класса Class2 – переопределяет метод родителя
|
||||||
|
... print('значение=',self.data)#Отображение данных экземпляра
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> z3=Class2()
|
||||||
|
>>> dir(z3)
|
||||||
|
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_zn']
|
||||||
|
>>> z3.zad_zn('Совсем новое')
|
||||||
|
>>> z3.otobrazh()
|
||||||
|
значение= Совсем новое
|
||||||
|
>>> z1.otobrazh()
|
||||||
|
Новое значение атрибута у экз.1
|
||||||
|
>>> del z1,z2,z3
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3 Использование классов, содержащихся в модуле
|
||||||
|
|
||||||
|
Был создан модуль Mod3 с таким содержимым:
|
||||||
|
|
||||||
|
```py
|
||||||
|
class Class1: #Объявление класса Class1 в модуле
|
||||||
|
def zad_zn(self,znach): # 1 Метод класса
|
||||||
|
self.data=znach # self - ссылка на экземпляр класса Class1
|
||||||
|
def otobrazh(self): # 2 Метод класса
|
||||||
|
print(self.data)#Отображение данных экземпляра
|
||||||
|
|
||||||
|
class Class2(Class1): #Class2 - наследник класса Class1
|
||||||
|
def otobrazh(self): # Метод класса Class2
|
||||||
|
print('значение=',self.data)#Отображение данных экземпляра
|
||||||
|
def otobrazh(objekt): #Объявление самостоятельной функции
|
||||||
|
print('значение объекта=',objekt)
|
||||||
|
```
|
||||||
|
|
||||||
|
Далее импортирован класс из этого модуля (при вызове метода otobrazh была выведена ошибка, так как не было задано значение обьекта с помощью метода zad_zn, которое и должно выводиться на печать):
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> from Mod3 import Class1 #Частичный импорт содержимого модуля
|
||||||
|
>>> z4=Class1()
|
||||||
|
>>> z4.otobrazh()
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#26>", line 1, in <module>
|
||||||
|
z4.otobrazh()
|
||||||
|
File "C:\Users\Лиза\OneDrive\Desktop\python-labs\TEMA9\Mod3.py", line 5, in otobrazh
|
||||||
|
print(self.data)#Отображение данных экземпляра
|
||||||
|
AttributeError: 'Class1' object has no attribute 'data'
|
||||||
|
```
|
||||||
|
Далее была произведена еще попытка печати, но предварительно было задано знаечние обьекта:
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> from Mod3 import Class1
|
||||||
|
>>> z4=Class1()
|
||||||
|
>>> z4.data='значение данного data у экз.4'
|
||||||
|
>>> z4.otobrazh()
|
||||||
|
значение данного data у экз.4
|
||||||
|
```
|
||||||
|
|
||||||
|
Потом был импортирован весь модуль и из него с использованием разных методов был вызван otobrazh:
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import Mod3 #Полный импорт содержимого модуля
|
||||||
|
>>> z4=Mod3.Class2()
|
||||||
|
>>> z4.zad_zn('Класс из модуля')
|
||||||
|
>>> z4.otobrazh()
|
||||||
|
значение= Класс из модуля
|
||||||
|
>>> Mod3.otobrazh('Объект')
|
||||||
|
значение объекта= Объект
|
||||||
|
```
|
||||||
|
## 4 Использование специальных методов
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> class Class3(Class2): #Наследник класса Class2, а через него – и класса Class1
|
||||||
|
... def __init__(self,znach): #Конструктор-вызывается при создании нового экземпляра класса
|
||||||
|
... self.data=znach
|
||||||
|
... def __add__(self,drug_zn): #Вызывается, когда экземпляр участвует в операции «+»
|
||||||
|
... return Class3(self.data+drug_zn)
|
||||||
|
... def zad_dr_zn(self,povtor): #А это - обычный метод
|
||||||
|
... self.data*=povtor
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> z5=Class3('abc') #При создании экземпляра срабатывает конструктор
|
||||||
|
>>> z5.otobrazh()
|
||||||
|
значение= abc
|
||||||
|
>>> z6=z5+'def'
|
||||||
|
>>> z6.otobrazh()
|
||||||
|
значение= abcdef
|
||||||
|
>>> z6.zad_dr_zn(3)
|
||||||
|
>>> z6.otobrazh()
|
||||||
|
значение= abcdefabcdefabcdef
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5 Присоединение атрибутов к классу
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> dir(Class3)
|
||||||
|
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_dr_zn', 'zad_zn']
|
||||||
|
>>> Class3.fio='Иванов И.И.'
|
||||||
|
>>> z7=Class3(123)
|
||||||
|
>>> dir(z7)==dir(Class3)
|
||||||
|
False
|
||||||
|
>>> dir(z7.fio)
|
||||||
|
['__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']
|
||||||
|
>>> z7.rozden='1987'
|
||||||
|
>>> dir(z7)
|
||||||
|
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'rozden', 'zad_dr_zn', 'zad_zn']
|
||||||
|
dir(Class3)
|
||||||
|
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6 Выявление родительских классов
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> Class3.__bases__
|
||||||
|
(<class '__main__.Class2'>,)
|
||||||
|
>>> Class2.__bases__
|
||||||
|
(<class '__main__.Class1'>,)
|
||||||
|
>>> Class1.__bases__
|
||||||
|
(<class 'object'>,)
|
||||||
|
>>> Class3.__mro__
|
||||||
|
(<class '__main__.Class3'>, <class '__main__.Class2'>, <class '__main__.Class1'>, <class 'object'>)
|
||||||
|
>>> ZeroDivisionError.__mro__
|
||||||
|
(<class 'ZeroDivisionError'>, <class 'ArithmeticError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7 Создание свойства класса
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> class Class4:
|
||||||
|
... def __init__(sam,znach):
|
||||||
|
... sam.__prm=znach
|
||||||
|
... def chten(sam):
|
||||||
|
... return sam.__prm
|
||||||
|
... def zapis(sam,znch):
|
||||||
|
... sam.__prm=znch
|
||||||
|
... def stiran(sam):
|
||||||
|
... del sam.__prm
|
||||||
|
... svojstvo=property(chten,zapis,stiran)
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> exempl=Class4(12)
|
||||||
|
>>> exempl.svojstvo
|
||||||
|
12
|
||||||
|
>>> exempl.svojstvo=45
|
||||||
|
>>> print(exempl.svojstvo)
|
||||||
|
45
|
||||||
|
del exempl.svojstvo
|
||||||
|
exempl.svojstvo
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#40>", line 1, in <module>
|
||||||
|
exempl.svojstvo
|
||||||
|
File "<pyshell#33>", line 5, in chten
|
||||||
|
return sam.__prm
|
||||||
|
AttributeError: 'Class4' object has no attribute '_Class4__prm'
|
||||||
|
```
|
||||||
|
## 8
|
||||||
|
|
||||||
|
Была создана программа с формированием класса для расчета САУ:
|
||||||
|
|
||||||
|
```py
|
||||||
|
class SAU:
|
||||||
|
def __init__(self,zn_param):
|
||||||
|
self.param=zn_param
|
||||||
|
self.ypr=[0,0]
|
||||||
|
|
||||||
|
def zdn_zn(self,upr):
|
||||||
|
self.x=upr
|
||||||
|
|
||||||
|
def model(self):
|
||||||
|
def inerz(x,T,yy):
|
||||||
|
return (x+T*yy)/(T+1)
|
||||||
|
y0=self.x-self.ypr[1]*self.param[3] #Обр.связь с усилителем 2
|
||||||
|
y1=self.param[0]*y0 #Усилитель1
|
||||||
|
y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1
|
||||||
|
y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2
|
||||||
|
self.ypr[0]=y2
|
||||||
|
self.ypr[1]=y3
|
||||||
|
|
||||||
|
def otobraz(self):
|
||||||
|
print('y=',self.ypr[1])
|
||||||
|
```
|
||||||
|
|
||||||
|
Была создана основная программа для формирования САУ с помощью модуля SAU:
|
||||||
|
|
||||||
|
```py
|
||||||
|
###main_SAU
|
||||||
|
|
||||||
|
prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь
|
||||||
|
from SAU import *
|
||||||
|
xx=[0]+[1]*20 #Входной сигнал – «ступенька»
|
||||||
|
SAUe=SAU(prm) # Создаём экземпляр класса
|
||||||
|
yt=[]
|
||||||
|
for xt in xx: # Прохождение входного сигнала
|
||||||
|
SAUe.zdn_zn(xt)
|
||||||
|
SAUe.model()
|
||||||
|
SAUe.otobraz()
|
||||||
|
yt.append(SAUe.ypr[1])
|
||||||
|
|
||||||
|
import pylab
|
||||||
|
pylab.plot(yt)
|
||||||
|
pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|
Был запущен модуль MAIN_SAU
|
||||||
|
|
||||||
|
```py
|
||||||
|
=============== RESTART: C:/Users/Лиза/OneDrive/Desktop/python-labs/TEMA9/MAIN_SAU.py ==============
|
||||||
|
y= 0.0
|
||||||
|
y= 0.2173913043478261
|
||||||
|
y= 0.4763705103969754
|
||||||
|
y= 0.686594887811293
|
||||||
|
y= 0.8199324616478645
|
||||||
|
y= 0.8837201137353929
|
||||||
|
y= 0.8994188484874774
|
||||||
|
y= 0.8892777072047301
|
||||||
|
y= 0.870097963179993
|
||||||
|
y= 0.8518346102696789
|
||||||
|
y= 0.8387499784485772
|
||||||
|
y= 0.8314204114211459
|
||||||
|
y= 0.8286051955249649
|
||||||
|
y= 0.8285656555914835
|
||||||
|
y= 0.8297915186846528
|
||||||
|
y= 0.8312697736438287
|
||||||
|
y= 0.8324765218921963
|
||||||
|
y= 0.8332456979978418
|
||||||
|
y= 0.8336163607592184
|
||||||
|
y= 0.8337101315489143
|
||||||
|
y= 0.833654237067147
|
||||||
|
```
|
||||||
|

|
||||||
|
|
||||||
|
## 9 Завершение работы
|
||||||
|
|
||||||
|
Сеанс в IDLE был завершен!
|
||||||
|
|
||||||
|
|
||||||
104
TEMA9/task.md
Обычный файл
@@ -0,0 +1,104 @@
|
|||||||
|
## Общее контрольное задание по теме 9
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
|
||||||
|
Создайте и запишите в модуль класс, содержащий следующие компоненты:
|
||||||
|
|
||||||
|
- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
|
||||||
|
|
||||||
|
- метод для обеспечения операции повышения оклада сотрудника на заданное значение;
|
||||||
|
|
||||||
|
- метод для обеспечения перевода сотрудника из одного отдела в другой;
|
||||||
|
|
||||||
|
- метод для изменения должности сотрудника;
|
||||||
|
|
||||||
|
- свойство, содержащее перечень (список) поощрений сотрудника.
|
||||||
|
|
||||||
|
Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобра-зите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Программа записанная в модуль:
|
||||||
|
|
||||||
|
```py
|
||||||
|
class Sotrudnik:
|
||||||
|
|
||||||
|
def __init__(self, fio, otdel, dolzhnost, oklad):
|
||||||
|
self.fio = fio
|
||||||
|
self.otdel = otdel
|
||||||
|
self.dolzhnost = dolzhnost
|
||||||
|
self.oklad = oklad
|
||||||
|
# Приватный атрибут для хранения поощрений
|
||||||
|
self.__pooshchreniya = []
|
||||||
|
|
||||||
|
def __chtenie_pooshchreniy(self):
|
||||||
|
return self.__pooshchreniya
|
||||||
|
|
||||||
|
def __zapis_pooshchreniy(self, pooshchrenie):
|
||||||
|
self.__pooshchreniya.append(pooshchrenie)
|
||||||
|
|
||||||
|
def __stiran_pooshchreniy(self):
|
||||||
|
self.__pooshchreniya = []
|
||||||
|
|
||||||
|
pooshchreniya = property(__chtenie_pooshchreniy, __zapis_pooshchreniy, __stiran_pooshchreniy, "Список поощрений сотрудника")
|
||||||
|
|
||||||
|
def povysit_oklad(self, summa):
|
||||||
|
self.oklad += summa
|
||||||
|
|
||||||
|
def perevod_v_otdel(self, novyy_otdel):
|
||||||
|
self.otdel = novyy_otdel
|
||||||
|
|
||||||
|
def izmenit_dolzhnost(self, novaya_dolzhnost):
|
||||||
|
self.dolzhnost = novaya_dolzhnost
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return (f"Сотрудник: {self.fio}, Отдел: {self.otdel}, "
|
||||||
|
f"Должность: {self.dolzhnost}, Оклад: {self.oklad}, "
|
||||||
|
f"Поощрения: {self.pooshchreniya}")
|
||||||
|
|
||||||
|
# Создание экземпляров
|
||||||
|
emp1 = Sotrudnik("Иванова И.И.", "Секретариат", "Разносчица бумажек", 50000)
|
||||||
|
emp2 = Sotrudnik("Петрова А.С.", "Секретариат", "Приносильщица кофе", 80000)
|
||||||
|
|
||||||
|
# Задание начальных поощрений
|
||||||
|
emp1.pooshchreniya = "Благодарность"
|
||||||
|
emp2.pooshchreniya = "Премия"
|
||||||
|
emp2.pooshchreniya = "Премия 2"
|
||||||
|
|
||||||
|
# Отображение начальных значений
|
||||||
|
print("Начальные данные ")
|
||||||
|
print(emp1)
|
||||||
|
print(emp2)
|
||||||
|
print("-" * 30)
|
||||||
|
|
||||||
|
# Операции с экземплярами
|
||||||
|
|
||||||
|
# Сотрудник 1: Повышение оклада и перевод
|
||||||
|
emp1.povysit_oklad(10000)
|
||||||
|
emp1.perevod_v_otdel("Генсекритариат")
|
||||||
|
|
||||||
|
# Сотрудник 2: Изменение должности и объявление благодарности
|
||||||
|
emp2.izmenit_dolzhnost("Старшая секретарша")
|
||||||
|
emp2.pooshchreniya = "Благодарность от руководства за вкусный кофе"
|
||||||
|
|
||||||
|
# Отображение измененных значений
|
||||||
|
print("Измененные данные")
|
||||||
|
print(emp1)
|
||||||
|
print(emp2)
|
||||||
|
print("-" * 30)
|
||||||
|
```
|
||||||
|
|
||||||
|
Отображение результата:
|
||||||
|
|
||||||
|
```py
|
||||||
|
================================================== RESTART: C:/Users/Лиза/OneDrive/Desktop/python-labs/TEMA9/task.py ==================================================
|
||||||
|
Начальные данные
|
||||||
|
Сотрудник: Иванова И.И., Отдел: Секретариат, Должность: Разносчица бумажек, Оклад: 50000, Поощрения: ['Благодарность']
|
||||||
|
Сотрудник: Петрова А.С., Отдел: Секретариат, Должность: Приносильщица кофе, Оклад: 80000, Поощрения: ['Премия', 'Премия 2']
|
||||||
|
------------------------------
|
||||||
|
Измененные данные
|
||||||
|
Сотрудник: Иванова И.И., Отдел: Генсекритариат, Должность: Разносчица бумажек, Оклад: 60000, Поощрения: ['Благодарность']
|
||||||
|
Сотрудник: Петрова А.С., Отдел: Секретариат, Должность: Старшая секретарша, Оклад: 80000, Поощрения: ['Премия', 'Премия 2', 'Благодарность от руководства за вкусный кофе']
|
||||||
|
------------------------------
|
||||||
|
```
|
||||||
65
TEMA9/task.py
Обычный файл
@@ -0,0 +1,65 @@
|
|||||||
|
class Sotrudnik:
|
||||||
|
|
||||||
|
def __init__(self, fio, otdel, dolzhnost, oklad):
|
||||||
|
self.fio = fio
|
||||||
|
self.otdel = otdel
|
||||||
|
self.dolzhnost = dolzhnost
|
||||||
|
self.oklad = oklad
|
||||||
|
# Приватный атрибут для хранения поощрений
|
||||||
|
self.__pooshchreniya = []
|
||||||
|
|
||||||
|
def __chtenie_pooshchreniy(self):
|
||||||
|
return self.__pooshchreniya
|
||||||
|
|
||||||
|
def __zapis_pooshchreniy(self, pooshchrenie):
|
||||||
|
self.__pooshchreniya.append(pooshchrenie)
|
||||||
|
|
||||||
|
def __stiran_pooshchreniy(self):
|
||||||
|
self.__pooshchreniya = []
|
||||||
|
|
||||||
|
pooshchreniya = property(__chtenie_pooshchreniy, __zapis_pooshchreniy, __stiran_pooshchreniy, "Список поощрений сотрудника")
|
||||||
|
|
||||||
|
def povysit_oklad(self, summa):
|
||||||
|
self.oklad += summa
|
||||||
|
|
||||||
|
def perevod_v_otdel(self, novyy_otdel):
|
||||||
|
self.otdel = novyy_otdel
|
||||||
|
|
||||||
|
def izmenit_dolzhnost(self, novaya_dolzhnost):
|
||||||
|
self.dolzhnost = novaya_dolzhnost
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return (f"Сотрудник: {self.fio}, Отдел: {self.otdel}, "
|
||||||
|
f"Должность: {self.dolzhnost}, Оклад: {self.oklad}, "
|
||||||
|
f"Поощрения: {self.pooshchreniya}")
|
||||||
|
|
||||||
|
# Создание экземпляров
|
||||||
|
emp1 = Sotrudnik("Иванова И.И.", "Секретариат", "Разносчица бумажек", 50000)
|
||||||
|
emp2 = Sotrudnik("Петрова А.С.", "Секретариат", "Приносильщица кофе", 80000)
|
||||||
|
|
||||||
|
# Задание начальных поощрений
|
||||||
|
emp1.pooshchreniya = "Благодарность"
|
||||||
|
emp2.pooshchreniya = "Премия"
|
||||||
|
emp2.pooshchreniya = "Премия 2"
|
||||||
|
|
||||||
|
# Отображение начальных значений
|
||||||
|
print("Начальные данные ")
|
||||||
|
print(emp1)
|
||||||
|
print(emp2)
|
||||||
|
print("-" * 30)
|
||||||
|
|
||||||
|
# Операции с экземплярами
|
||||||
|
|
||||||
|
# Сотрудник 1: Повышение оклада и перевод
|
||||||
|
emp1.povysit_oklad(10000)
|
||||||
|
emp1.perevod_v_otdel("Генсекритариат")
|
||||||
|
|
||||||
|
# Сотрудник 2: Изменение должности и объявление благодарности
|
||||||
|
emp2.izmenit_dolzhnost("Старшая секретарша")
|
||||||
|
emp2.pooshchreniya = "Благодарность от руководства за вкусный кофе"
|
||||||
|
|
||||||
|
# Отображение измененных значений
|
||||||
|
print("Измененные данные")
|
||||||
|
print(emp1)
|
||||||
|
print(emp2)
|
||||||
|
print("-" * 30)
|
||||||
187
TEMA9/test.md
Обычный файл
@@ -0,0 +1,187 @@
|
|||||||
|
## Модуль 3
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
Вариант 10
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Разработайте функцию по заданию и на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных
|
||||||
|
для проверки работы функции, вызов функции и отображение полученных результатов.
|
||||||
|
Разработайте функцию с 5 аргументами, создающую отсчеты сигнала в виде последовательности импульсов с заданными параметрами:
|
||||||
|
амплитуда, продолжительность импульса, период (импульс + пауза), число отсчетов (аргументы функции).
|
||||||
|
Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Для создания бинарного файла был создан модуль TEST с таким кодом:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import random
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
def create_binary_file(filename="input_data.bin", len1=40, len2=50, min_val=20, max_val=45):
|
||||||
|
krt1 = tuple(random.randint(min_val, max_val) for _ in range(len1))
|
||||||
|
krt2 = tuple(random.randint(min_val, max_val) for _ in range(len2))
|
||||||
|
|
||||||
|
with open(filename, 'wb') as f:
|
||||||
|
pickle.dump(krt1, f)
|
||||||
|
pickle.dump(krt2, f)
|
||||||
|
print(f"Бинарный файл '{filename}' создан с двумя кортежами.")
|
||||||
|
print(f"KRT1: {krt1[:5]}... (длина {len(krt1)})")
|
||||||
|
print(f"KRT2: {krt2[:5]}... (длина {len(krt2)})")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
create_binary_file()
|
||||||
|
```
|
||||||
|
|
||||||
|
Далее приведен текст модуля 1:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import math
|
||||||
|
|
||||||
|
def process_tuples(tuple1, tuple2):
|
||||||
|
temp_list = []
|
||||||
|
for item in tuple1:
|
||||||
|
temp_list.append((item, 1))
|
||||||
|
for item in tuple2:
|
||||||
|
temp_list.append((item, 2))
|
||||||
|
|
||||||
|
temp_list.sort(key=lambda x: x[0])
|
||||||
|
|
||||||
|
sps1 = [item[0] for item in temp_list]
|
||||||
|
sps2 = [item[1] for item in temp_list]
|
||||||
|
|
||||||
|
return sps1, sps2
|
||||||
|
|
||||||
|
def calculate_stats(numeric_list):
|
||||||
|
n = len(numeric_list)
|
||||||
|
mean = sum(numeric_list) / n
|
||||||
|
|
||||||
|
min_val = min(numeric_list)
|
||||||
|
max_val = max(numeric_list)
|
||||||
|
|
||||||
|
|
||||||
|
sorted_list = sorted(numeric_list)
|
||||||
|
if n % 2 == 1:
|
||||||
|
median = sorted_list[n // 2]
|
||||||
|
else:
|
||||||
|
median = (sorted_list[n // 2 - 1] + sorted_list[n // 2]) / 2
|
||||||
|
if n <= 1:
|
||||||
|
std_dev = 0.0
|
||||||
|
else:
|
||||||
|
variance = sum((x - mean) ** 2 for x in numeric_list) / (n - 1)
|
||||||
|
std_dev = math.sqrt(variance)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"Среднее": mean,
|
||||||
|
"Наименьшее": min_val,
|
||||||
|
"Наибольшее": max_val,
|
||||||
|
"Медиана": median,
|
||||||
|
"Стандартное отклонение": std_dev
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Далее приведен текст модуля 2:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import os
|
||||||
|
import pickle
|
||||||
|
from M1 import process_tuples, calculate_stats
|
||||||
|
|
||||||
|
def process_data_and_save_results():
|
||||||
|
filename = ""
|
||||||
|
|
||||||
|
while not os.path.exists(filename):
|
||||||
|
filename = input("Введите имя бинарного файла с данными (например, input_data.bin): ")
|
||||||
|
if not os.path.exists(filename):
|
||||||
|
print(f"Файл '{filename}' не найден. Попробуйте еще раз.")
|
||||||
|
|
||||||
|
|
||||||
|
with open(filename, 'rb') as f:
|
||||||
|
krt1 = pickle.load(f)
|
||||||
|
krt2 = pickle.load(f)
|
||||||
|
print(f"\nДанные успешно считаны из файла '{filename}'.")
|
||||||
|
print(f"KRT1 (первые 5 элементов): {krt1[:5]}")
|
||||||
|
print(f"KRT2 (первые 5 элементов): {krt2[:5]}")
|
||||||
|
|
||||||
|
sps1, sps2 = process_tuples(krt1, krt2)
|
||||||
|
print("\n--- Результаты функции 1 ---")
|
||||||
|
print(f"SPS1 (упорядоченный список элементов): {sps1[:10]}... (длина {len(sps1)})")
|
||||||
|
print(f"SPS2 (список происхождения элементов): {sps2[:10]}... (длина {len(sps2)})")
|
||||||
|
|
||||||
|
|
||||||
|
stats = calculate_stats(sps1)
|
||||||
|
print("\n--- Результаты функции 2 (для SPS1) ---")
|
||||||
|
for key, value in stats.items():
|
||||||
|
print(f"{key}: {value:.2f}")
|
||||||
|
|
||||||
|
output_filename = "Res22.txt"
|
||||||
|
with open(output_filename, 'w') as f:
|
||||||
|
for val1, val2 in zip(sps1, sps2):
|
||||||
|
f.write(f"{val1} {val2}\n")
|
||||||
|
print(f"\nРезультаты функции 1 записаны в файл '{output_filename}'.")
|
||||||
|
|
||||||
|
return sps1
|
||||||
|
```
|
||||||
|
|
||||||
|
И текст основной прогрммы M0:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
from M2 import process_data_and_save_results
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print("--- Запуск главной программы M0 ---")
|
||||||
|
|
||||||
|
|
||||||
|
sps1_for_plot = process_data_and_save_results()
|
||||||
|
|
||||||
|
|
||||||
|
plt.figure(figsize=(10, 6))
|
||||||
|
plt.plot(sps1_for_plot, marker='.', linestyle='-', color='skyblue', label='SPS1 Values')
|
||||||
|
plt.title("График упорядоченного списка SPS1")
|
||||||
|
plt.xlabel("Индекс отсчета")
|
||||||
|
plt.ylabel("Значение элемента")
|
||||||
|
plt.grid(True)
|
||||||
|
plt.legend()
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
print("\n Программа завершена")
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод программы:
|
||||||
|
|
||||||
|
```py
|
||||||
|
================ RESTART: C:\Users\u522-16\Desktop\tema9\TEST.py ===============
|
||||||
|
Бинарный файл 'input_data.bin' создан с двумя кортежами.
|
||||||
|
KRT1: (33, 24, 43, 33, 42)... (длина 40)
|
||||||
|
KRT2: (34, 33, 32, 38, 27)... (длина 50)
|
||||||
|
>>>
|
||||||
|
================= RESTART: C:\Users\u522-16\Desktop\tema9\M0.py ================
|
||||||
|
--- Запуск главной программы M0 ---
|
||||||
|
Введите имя бинарного файла с данными (например, input_data.bin): input_data.bin
|
||||||
|
|
||||||
|
Данные успешно считаны из файла 'input_data.bin'.
|
||||||
|
KRT1 (первые 5 элементов): (33, 24, 43, 33, 42)
|
||||||
|
KRT2 (первые 5 элементов): (34, 33, 32, 38, 27)
|
||||||
|
|
||||||
|
--- Результаты функции 1 ---
|
||||||
|
SPS1 (упорядоченный список элементов): [20, 20, 20, 20, 21, 22, 23, 23, 23, 24]... (длина 90)
|
||||||
|
SPS2 (список происхождения элементов): [1, 2, 2, 2, 2, 1, 1, 1, 2, 1]... (длина 90)
|
||||||
|
|
||||||
|
--- Результаты функции 2 (для SPS1) ---
|
||||||
|
Среднее: 33.02
|
||||||
|
Наименьшее: 20.00
|
||||||
|
Наибольшее: 45.00
|
||||||
|
Медиана: 33.00
|
||||||
|
Стандартное отклонение: 6.87
|
||||||
|
|
||||||
|
Результаты функции 1 записаны в файл 'Res22.txt'.
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
188
TEMA9/test.txt
Обычный файл
@@ -0,0 +1,188 @@
|
|||||||
|
## Модуль 3
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
Вариант 10
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Разработайте функцию по заданию и на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных
|
||||||
|
для проверки работы функции, вызов функции и отображение полученных результатов.
|
||||||
|
Разработайте функцию с 5 аргументами, создающую отсчеты сигнала в виде последовательности импульсов с заданными параметрами:
|
||||||
|
амплитуда, продолжительность импульса, период (импульс + пауза), число отсчетов (аргументы функции).
|
||||||
|
Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Для создания бинарного файла был создан модуль TEST с таким кодом:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import random
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
def create_binary_file(filename="input_data.bin", len1=40, len2=50, min_val=20, max_val=45):
|
||||||
|
krt1 = tuple(random.randint(min_val, max_val) for _ in range(len1))
|
||||||
|
krt2 = tuple(random.randint(min_val, max_val) for _ in range(len2))
|
||||||
|
|
||||||
|
with open(filename, 'wb') as f:
|
||||||
|
pickle.dump(krt1, f)
|
||||||
|
pickle.dump(krt2, f)
|
||||||
|
print(f"Бинарный файл '{filename}' создан с двумя кортежами.")
|
||||||
|
print(f"KRT1: {krt1[:5]}... (длина {len(krt1)})")
|
||||||
|
print(f"KRT2: {krt2[:5]}... (длина {len(krt2)})")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
create_binary_file()
|
||||||
|
```
|
||||||
|
|
||||||
|
Далее приведен текст модуля 1:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import math
|
||||||
|
|
||||||
|
def process_tuples(tuple1, tuple2):
|
||||||
|
temp_list = []
|
||||||
|
for item in tuple1:
|
||||||
|
temp_list.append((item, 1))
|
||||||
|
for item in tuple2:
|
||||||
|
temp_list.append((item, 2))
|
||||||
|
|
||||||
|
temp_list.sort(key=lambda x: x[0])
|
||||||
|
|
||||||
|
sps1 = [item[0] for item in temp_list]
|
||||||
|
sps2 = [item[1] for item in temp_list]
|
||||||
|
|
||||||
|
return sps1, sps2
|
||||||
|
|
||||||
|
def calculate_stats(numeric_list):
|
||||||
|
n = len(numeric_list)
|
||||||
|
mean = sum(numeric_list) / n
|
||||||
|
|
||||||
|
min_val = min(numeric_list)
|
||||||
|
max_val = max(numeric_list)
|
||||||
|
|
||||||
|
|
||||||
|
sorted_list = sorted(numeric_list)
|
||||||
|
if n % 2 == 1:
|
||||||
|
median = sorted_list[n // 2]
|
||||||
|
else:
|
||||||
|
median = (sorted_list[n // 2 - 1] + sorted_list[n // 2]) / 2
|
||||||
|
if n <= 1:
|
||||||
|
std_dev = 0.0
|
||||||
|
else:
|
||||||
|
variance = sum((x - mean) ** 2 for x in numeric_list) / (n - 1)
|
||||||
|
std_dev = math.sqrt(variance)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"Среднее": mean,
|
||||||
|
"Наименьшее": min_val,
|
||||||
|
"Наибольшее": max_val,
|
||||||
|
"Медиана": median,
|
||||||
|
"Стандартное отклонение": std_dev
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Далее приведен текст модуля 2:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import os
|
||||||
|
import pickle
|
||||||
|
from M1 import process_tuples, calculate_stats
|
||||||
|
|
||||||
|
def process_data_and_save_results():
|
||||||
|
filename = ""
|
||||||
|
|
||||||
|
while not os.path.exists(filename):
|
||||||
|
filename = input("Введите имя бинарного файла с данными (например, input_data.bin): ")
|
||||||
|
if not os.path.exists(filename):
|
||||||
|
print(f"Файл '{filename}' не найден. Попробуйте еще раз.")
|
||||||
|
|
||||||
|
|
||||||
|
with open(filename, 'rb') as f:
|
||||||
|
krt1 = pickle.load(f)
|
||||||
|
krt2 = pickle.load(f)
|
||||||
|
print(f"\nДанные успешно считаны из файла '{filename}'.")
|
||||||
|
print(f"KRT1 (первые 5 элементов): {krt1[:5]}")
|
||||||
|
print(f"KRT2 (первые 5 элементов): {krt2[:5]}")
|
||||||
|
|
||||||
|
sps1, sps2 = process_tuples(krt1, krt2)
|
||||||
|
print("\n--- Результаты функции 1 ---")
|
||||||
|
print(f"SPS1 (упорядоченный список элементов): {sps1[:10]}... (длина {len(sps1)})")
|
||||||
|
print(f"SPS2 (список происхождения элементов): {sps2[:10]}... (длина {len(sps2)})")
|
||||||
|
|
||||||
|
|
||||||
|
stats = calculate_stats(sps1)
|
||||||
|
print("\n--- Результаты функции 2 (для SPS1) ---")
|
||||||
|
for key, value in stats.items():
|
||||||
|
print(f"{key}: {value:.2f}")
|
||||||
|
|
||||||
|
output_filename = "Res22.txt"
|
||||||
|
with open(output_filename, 'w') as f:
|
||||||
|
for val1, val2 in zip(sps1, sps2):
|
||||||
|
f.write(f"{val1} {val2}\n")
|
||||||
|
print(f"\nРезультаты функции 1 записаны в файл '{output_filename}'.")
|
||||||
|
|
||||||
|
return sps1
|
||||||
|
```
|
||||||
|
|
||||||
|
И текст основной прогрммы M0:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
from M2 import process_data_and_save_results
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print("--- Запуск главной программы M0 ---")
|
||||||
|
|
||||||
|
|
||||||
|
sps1_for_plot = process_data_and_save_results()
|
||||||
|
|
||||||
|
|
||||||
|
plt.figure(figsize=(10, 6))
|
||||||
|
plt.plot(sps1_for_plot, marker='.', linestyle='-', color='skyblue', label='SPS1 Values')
|
||||||
|
plt.title("График упорядоченного списка SPS1")
|
||||||
|
plt.xlabel("Индекс отсчета")
|
||||||
|
plt.ylabel("Значение элемента")
|
||||||
|
plt.grid(True)
|
||||||
|
plt.legend()
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
print("\n Программа завершена")
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод программы:
|
||||||
|
|
||||||
|
```py
|
||||||
|
================ RESTART: C:\Users\u522-16\Desktop\tema9\TEST.py ===============
|
||||||
|
Бинарный файл 'input_data.bin' создан с двумя кортежами.
|
||||||
|
KRT1: (33, 24, 43, 33, 42)... (длина 40)
|
||||||
|
KRT2: (34, 33, 32, 38, 27)... (длина 50)
|
||||||
|
>>>
|
||||||
|
================= RESTART: C:\Users\u522-16\Desktop\tema9\M0.py ================
|
||||||
|
--- Запуск главной программы M0 ---
|
||||||
|
Введите имя бинарного файла с данными (например, input_data.bin): input_data.bin
|
||||||
|
|
||||||
|
Данные успешно считаны из файла 'input_data.bin'.
|
||||||
|
KRT1 (первые 5 элементов): (33, 24, 43, 33, 42)
|
||||||
|
KRT2 (первые 5 элементов): (34, 33, 32, 38, 27)
|
||||||
|
|
||||||
|
--- Результаты функции 1 ---
|
||||||
|
SPS1 (упорядоченный список элементов): [20, 20, 20, 20, 21, 22, 23, 23, 23, 24]... (длина 90)
|
||||||
|
SPS2 (список происхождения элементов): [1, 2, 2, 2, 2, 1, 1, 1, 2, 1]... (длина 90)
|
||||||
|
|
||||||
|
--- Результаты функции 2 (для SPS1) ---
|
||||||
|
Среднее: 33.02
|
||||||
|
Наименьшее: 20.00
|
||||||
|
Наибольшее: 45.00
|
||||||
|
Медиана: 33.00
|
||||||
|
Стандартное отклонение: 6.87
|
||||||
|
|
||||||
|
Результаты функции 1 записаны в файл 'Res22.txt'.
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
85
test.md
Обычный файл
@@ -0,0 +1,85 @@
|
|||||||
|
## ИКЗ по теме 8
|
||||||
|
Добровольска Елизавета,А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
для проверки работы функции, вызов функции и отображение полученных результатов.
|
||||||
|
Разработайте функцию с 5 аргументами, создающую отсчеты сигнала в виде последовательности импульсов с заданными параметрами:
|
||||||
|
амплитуда, продолжительность импульса, период (импульс + пауза), число отсчетов (аргументы функции).
|
||||||
|
Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Код модуля для генерации сигнала:
|
||||||
|
```py
|
||||||
|
def generate_pulsed_signal(amplitude, pulse_duration, period, num_samples, filename):
|
||||||
|
signal_data = []
|
||||||
|
|
||||||
|
for i in range(num_samples):
|
||||||
|
# Определяем находится ли текущий отсчет в фазе импульсаа
|
||||||
|
if (i % period) < pulse_duration:
|
||||||
|
signal_data.append(amplitude)
|
||||||
|
else:
|
||||||
|
signal_data.append(0) # Фаза паузы
|
||||||
|
|
||||||
|
# Запись сигнала в файлик
|
||||||
|
with open(filename, 'w') as f:
|
||||||
|
for sample in signal_data:
|
||||||
|
f.write(f"{sample}\n")
|
||||||
|
|
||||||
|
return signal_data
|
||||||
|
```
|
||||||
|
|
||||||
|
Основной модуль:
|
||||||
|
|
||||||
|
```py
|
||||||
|
from signal_generator import generate_pulsed_signal
|
||||||
|
|
||||||
|
print("Генерация импульсного сигнала")
|
||||||
|
|
||||||
|
|
||||||
|
signal_amplitude = 10.0
|
||||||
|
signal_pulse_duration = 5
|
||||||
|
signal_period = 15
|
||||||
|
signal_num_samples = 100
|
||||||
|
output_file_name = "pulsed_signal.txt"
|
||||||
|
|
||||||
|
print(f"\nПараметры сигнала:")
|
||||||
|
print(f" Амплитуда: {signal_amplitude}")
|
||||||
|
print(f" Продолжительность импульса: {signal_pulse_duration} отсчетов")
|
||||||
|
print(f" Период (импульс+пауза): {signal_period} отсчетов")
|
||||||
|
print(f" Общее число отсчетов: {signal_num_samples}")
|
||||||
|
print(f" Файл для записи: {output_file_name}")
|
||||||
|
|
||||||
|
generated_signal = generate_pulsed_signal(
|
||||||
|
signal_amplitude,
|
||||||
|
signal_pulse_duration,
|
||||||
|
signal_period,
|
||||||
|
signal_num_samples,
|
||||||
|
output_file_name
|
||||||
|
)
|
||||||
|
|
||||||
|
print(f"\nСигнал успешно сгенерирован и записан в файл '{output_file_name}'.")
|
||||||
|
print("\nПервые 20 отсчетов сгенерированного сигнала (возвращенный список):")
|
||||||
|
print(generated_signal[:20])
|
||||||
|
print("\n(Полный список доступен в переменной 'generated_signal' и в файле).")
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод в консоли:
|
||||||
|
|
||||||
|
Генерация импульсного сигнала
|
||||||
|
|
||||||
|
Параметры сигнала:
|
||||||
|
Амплитуда: 10.0
|
||||||
|
Продолжительность импульса: 5 отсчетов
|
||||||
|
Период (импульс+пауза): 15 отсчетов
|
||||||
|
Общее число отсчетов: 100
|
||||||
|
Файл для записи: pulsed_signal.txt
|
||||||
|
|
||||||
|
Сигнал успешно сгенерирован и записан в файл 'pulsed_signal.txt'.
|
||||||
|
|
||||||
|
Первые 20 отсчетов сгенерированного сигнала (возвращенный список):
|
||||||
|
[10.0, 10.0, 10.0, 10.0, 10.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.0, 10.0, 10.0, 10.0, 10.0]
|
||||||
|
|
||||||
|
(Полный список доступен в переменной 'generated_signal' и в файле).
|
||||||