форкнуто от main/python
Сравнить коммиты
1 Коммитов
Автор | SHA1 | Дата |
---|---|---|
|
ccc2fcdfb9 | 2 недель назад |
@ -1,8 +1,141 @@
|
|||||||
# Программное обеспечение автоматизированных систем
|
# Программное обеспечение автоматизированных систем
|
||||||
|
|
||||||
Методические указания и варианты заданий — в списке файлов выше.
|
* Методические указания и варианты заданий — в списке файлов выше.
|
||||||
[Комментарии к методическим указаниям](comments.md).
|
* [Журнал](https://docs.google.com/spreadsheets/d/1P9XF8Chyo3sBx5sgGW2UriUBv78sLLuHwOadQvefH9s/edit?usp=sharing)
|
||||||
|
* [Комментарии к методическим указаниям](comments.md)
|
||||||
|
|
||||||
## [Журнал](https://docs.google.com/spreadsheets/d/1P9XF8Chyo3sBx5sgGW2UriUBv78sLLuHwOadQvefH9s/edit?usp=sharing)
|
---
|
||||||
|
|
||||||
## [Репозиторий для выполнения лабораторных работ](http://uit.mpei.ru/git/main/python-labs)
|
## Работа с Git
|
||||||
|
|
||||||
|
**Работы проверяются только после того, как закоммичены по правилам ниже.**
|
||||||
|
|
||||||
|
1. В начале семестра
|
||||||
|
создать на сервере копию этого репозитория ("форкнуть" его), нажав *Fork*.
|
||||||
|
Получится репозиторий-форк `http://uit.mpei.ru/git/IvanovII/python`,
|
||||||
|
где `IvanovII` — ваше имя пользователя.
|
||||||
|
|
||||||
|
1. В начале каждого занятия:
|
||||||
|
|
||||||
|
Клонировать свой форк на рабочий стол:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone http://uit.mpei.ru/git/IvanovII/python
|
||||||
|
```
|
||||||
|
|
||||||
|
Перебазировать свой форк на исходный репозиторий ("апстрим"):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Первую команду нужно запускать только один раз,
|
||||||
|
# иначе будет ошибка "error: remote upstream already exists".
|
||||||
|
git remote add upstream http://uit.mpei.ru/git/main/python.git
|
||||||
|
git fetch upstream
|
||||||
|
git stash push
|
||||||
|
git rebase upstream/main
|
||||||
|
git stash pop
|
||||||
|
```
|
||||||
|
|
||||||
|
Перебазировать нужно, чтобы подтянуть из исходного репозитория обновления.
|
||||||
|
|
||||||
|
1. После того, как отчет написан, закоммитить его как `TEMAn/report.md`.
|
||||||
|
Здесь и далее `TEMAn` — каталоги конкретных тем: `TEMA1`, `TEMA2` и т. д.
|
||||||
|
Можно также коммитить по частям в процессе работы.
|
||||||
|
Если для отчета нужны рисунки, то их закоммитить в `TEMAn`,
|
||||||
|
назвав `figure0.png`, `figure1.png` и т. д.
|
||||||
|
|
||||||
|
1. Решение общего контрольного задания (ОКЗ) закоммитить как `TEMAn/task.md`.
|
||||||
|
Исключения:
|
||||||
|
|
||||||
|
* Тема 1 не содержит общего контрольного задания — ничего не делать.
|
||||||
|
* Тема 8 требует нескольких файлов — закоммитить их в каталог `TEMA8/task`.
|
||||||
|
|
||||||
|
1. Решение индивидуального контрольного задания (ИКЗ) по темам 2, 4, 5, 7, 8
|
||||||
|
или решение теста по модуля после тем 3, 6, 9
|
||||||
|
закоммитить как `TEMAn/test.md`.
|
||||||
|
Исключения:
|
||||||
|
|
||||||
|
* Тема 1 вместо ИКЗ содержит контрольный вопрос —
|
||||||
|
закоммитить также в `TEMA1/test.md`.
|
||||||
|
* Тема 8 и тест по модулю 3 (после темы 9) требуют нескольких файлов —
|
||||||
|
закоммитить в каталог `TEMAn/test`.
|
||||||
|
|
||||||
|
## Оформление отчета
|
||||||
|
|
||||||
|
Отчет `TEMAn/report.md` оформляется в формате Markdown по следующему образцу:
|
||||||
|
|
||||||
|
# Отчет по теме 1
|
||||||
|
|
||||||
|
Иванов Иван, А-01-25
|
||||||
|
|
||||||
|
## 1 Изучение среды IDLE
|
||||||
|
|
||||||
|
## 1.1 Настройка текущего каталога
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> import os
|
||||||
|
>>> os.chdir(r"C:\users\u111-19\Desktop\python\TEMA1")
|
||||||
|
>>> os.getcwd()
|
||||||
|
'C:\\Users\\u111-19\\Desktop\\python\\TEMA1'
|
||||||
|
```
|
||||||
|
|
||||||
|
Нажал *Файл / Открыть*, диалог оказался сразу нацелен на установленную папку:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Нужно написать приведенный выше текст в `report.md` (например, Блокнотом),
|
||||||
|
а рядом разместить изображение `figure0.png`,
|
||||||
|
тогда в web-интерфейсе Gitea фрагмент будет отображаться так:
|
||||||
|
|
||||||
|
> # Отчет по теме 1
|
||||||
|
>
|
||||||
|
> Иванов Иван, А-01-25
|
||||||
|
>
|
||||||
|
> ## 1 Изучение среды IDLE
|
||||||
|
>
|
||||||
|
> ## 1.1 Настройка текущего каталога
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> >>> import os
|
||||||
|
> >>> os.chdir(r"C:\users\u111-19\Desktop\python\TEMA1")
|
||||||
|
> >>> os.getcwd()
|
||||||
|
> 'C:\\Users\\u111-19\\Desktop\\python\\TEMA1'
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> Нажал *Файл / Открыть*, диалог оказался сразу нацелен на установленную папку:
|
||||||
|
>
|
||||||
|
> 
|
||||||
|
|
||||||
|
Заголовки пунктов должны отражать их суть в нескольких словах,
|
||||||
|
то есть просто скопировать текст пункта в заголовок не подойдет.
|
||||||
|
Вы должны сами придумать осмысленные заголовки, прочитав пункт задания.
|
||||||
|
|
||||||
|
В отчет копируется код, введенный в оболочку (строки, начинающиеся с `>>>`),
|
||||||
|
и вывод соответствующих команд (`'C:\\Users...` в примере).
|
||||||
|
|
||||||
|
Если в пункте задания требуется сделать вывод или объяснить что-то,
|
||||||
|
к коду и выводу добавляется письменный ответ или пояснение.
|
||||||
|
|
||||||
|
[Узнать больше о формате Markdown.](https://commonmark.org/help/)
|
||||||
|
|
||||||
|
## Оформление решений
|
||||||
|
|
||||||
|
Решение всех заданий оформлять по образцу:
|
||||||
|
|
||||||
|
# Общее контрольное задание по теме 2
|
||||||
|
|
||||||
|
Иванов Иван, А-01-25
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Создать переменную `name`, содержащую ваше имя. Определить тип этой переменной.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> name = 'Иван'
|
||||||
|
>>> type(name)
|
||||||
|
'str'
|
||||||
|
```
|
||||||
|
|
||||||
|
Для тем 8 и 9 раздела «Решение» не нужно,
|
||||||
|
вместо этого решение размещается в отдельных файлах `*.py`.
|
||||||
|
До Ширина: | Высота: | Размер: 33 KiB |
@ -1,426 +0,0 @@
|
|||||||
# Отчет по теме 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
|
|
@ -1 +0,0 @@
|
|||||||
# Протокол по Теме 2 Добровольска Елизавета
|
|
@ -1,42 +0,0 @@
|
|||||||
# Общее контрольное задание по теме 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')]}
|
|
После Ширина: | Высота: | Размер: 15 KiB |
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Загрузка…
Ссылка в новой задаче