Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

532 строки
18 KiB
Markdown

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

# Отчет по теме 2 Основы программирования Python
### Бушманов Артём Сергеевич, А-01-23.
### 1. Запуск оболочки IDLE
Установка рабочего каталога.
```Python
import os
os.chdir('/Users/ArtyomBushmanov/python-labs/TEMA2')
```
### 2.1 Изучение простых обьектов
```python
>>> f1=16
>>> f2=3
>>> f1,f2
(16, 3)
>>> f1;f2
16
3
```
```python
>>> 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. Изучение правил именования объектов в Python
Правила именования:
-  имена должны состоять из латинских букв, цифр и символов подчеркивания;
-  имена должны начинаться с латинской буквы (иногда могут начинаться с символа подчеркивания, но это – особый вид переменных);
-  имена не должны совпадать с ключевыми словами и встроенными идентификаторами языка Python;
-  большие и малые буквы в именах различаются (имена – чувствительные к регистру)!
С учетом этих правил в командном окне IDLE выполним следующие операции.
```python
>>> gg1=1.6
>>> hh1='Строка'
>>> 73sr=3
SyntaxError: invalid decimal literal
>>> and=7
SyntaxError: invalid syntax
```
### 4. Вывод списка ключевых слов с помощью инструкции.
```python
>>> 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']
```
### 5. Вывод списка встроенных идентификаторов с помощью инструкций
```python
>>> 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', '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']
```
### 5.1 Изучение функций (abs, len, max, min, pow, round, sorted, sum, zip)
#### abs()
```python
>>> abs(-7)
7
```
Возвращает модуль числа
#### len()
```python
>>> len([1, 2, 3])
3
```
Возвращает количество элементов в объекте (например, в списке)
#### max()
```python
>>> max(3, 5, 2)
5
```
Возвращает максимальное значение
#### min()
```python
>>> abs(-7)
7
```
Возвращает модуль числа
#### pow()
```python
>>> pow(2, 3)
8
```
Возводит число 2 в 3ью степень = 8
#### round()
```python
>>> round(3.1415926, 2)
3.14
```
Округляет число до заданного количества знаков после запятой
#### sorted()
```python
>>> sorted([3, 1, 2])
[1, 2, 3]
```
Возвращает отсортированный список
#### sum()
```python
>>> sum([1, 2, 3])
6
```
Возвращает сумму всех элементов в последовательности
#### zip()
```python
>>> list(zip([1, 2, 3], ['a', 'b', 'c']))
[(1, 'a'), (2, 'b'), (3, 'c')]
```
Создаёт пары элементов из нескольких последовательностей
### 6. Малые и большие буквы различаются
```python
>>> Gg1=45
>>> gg1, Gg1
(1.6, 45)
```
### 7. Изучение базовых типов объектов
Базовые типы объектов:
#### Логический (**bool**)
```python
>>> bb1=True
>>> bb2=False
>>> bb1;bb2
True
False
>>> type(bb1)
<class 'bool'>
```
#### Целый (**int**)
```python
>>> ii1=-1234567890
```
#### Вещественный (**float**)
```python
>>> a = 3.67
>>> b = -0.45
>>> ff1=-8.9876e-12  #экспоненциальная форма записи вещественного числа
```
#### Комплексный (**complex**)
```python
>>> cc1=2-3j
>>> z = -1j
>>> cc2=complex(a,b)  #Создается комплексное число
>>> cc2
(3.67-0.45j)
```
#### Строка символов (**str**)
```python
>>> ss1 = 'Это - строка символов'
>>> ss1 = "Это - строка символов"
>>> ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
>>> print(ss1a)
Это - " строка символов ",
выводимая на двух строках
>>> ss1b= 'Меня зовут: \n <Подольский НК>'
>>> print(ss1b)
Меня зовут:
<Подольский НК>
```
```python
>>> mnogo = """Нетрудно заметить , что в результате операции над числами разных типов получается число, имеющее более сложный тип из тех, которые участвуют в операции."""
>>> print(mnogo)
Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.
```
```python
>>> ss1[0]
'Э'
>>> ss1[8]
'р'
>>> ss1[-2]
'о'
>>> ss1[6:9] #Это часть строки – символы с 6-го индекса по 8-й (9-й не включается!)
'стр'
>>> ss1[13:]
'символов'
>>> ss1[:13]
'Это - строка '
>>> ss1[5:-8]
' строка '
>>> ss1[3:17:2]
' тоасм'
>>> ss1[17:3:-2]
'омсаот '
>>> ss1[-4:3:-2]
'омсаот '
```
```python
>>> ss1[4]='='
Traceback (most recent call last):
File "<pyshell#67>", line 1, in <module>
ss1[4]='=' # Будет диагностика!
TypeError: 'str' object does not support item assignment
```
Будет диагностика!
```python
>>> ss1=ss1[:4]+'='+ss1[5:]
>>> ss1
'Это = строка символов'
```
```python
>>> ss1b[3:10]
'я зовут'
>>> ss1b[5:15]
'зовут: \n <'
>>> ss1b[2:-5:2]
'н оу:\n<ооьк'
```
### 8. Типы объектов (списки (list) , кортежи (tuple), словари (dict), множества (set))
### 8.1 Списки
Список – это последовательность:  упорядоченная по местоположению коллекция объектов произвольных типов, размер которых практически не ограничен. В отличие от символьных строк, списки являются изменяемыми последовательностями, т.е. их элементы могут изменяться с помощью операций присваивания.
```python
>>> spis1=[111,'Spisok',5-9j]
>>> spis1
[111, 'Spisok', (5-9j)]
```
```python
>>> stup=[0,0,1,1,1,1,1,1,1]
>>> stup
[0, 0, 1, 1, 1, 1, 1, 1, 1]
```
```python
>>> spis=[1,2,3,4,
      5,6,7,
      8,9,10]
>>> spis
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
```
```python
>>> spis1[-1]
(5-9j)
>>> stup[-8::2]
[0, 1, 1, 1]
>>> spis1[1]='Список'
>>> spis1
[111, 'Список', (5-9j)]
```
```python
>>> len(spis1)
3
```
```python
>>> help(spis1.append)
Help on built-in function append:
append(object, /) method of builtins.list instance
Append object to the end of the list.
```
```python
>>> spis1.append('New item')
>>> spis1
[111, 'Список', (5-9j), 'New item']
>>> spis1+['New item']
[111, 'Список', (5-9j), 'New item', 'New item']
>>>spis1
[111, 'Список', (5-9j), 'New item']
```
#### Удаление элемента списка
```python
>>> spis1.pop(1) #Из списка удален элемент с индексом 1
'Список'
>>> spis1
[111, (5-9j), 'New item']
```
#### insert
```python
>>> lst = [1, 2, 3]
>>> lst.insert(1, 100)
[1, 100, 2, 3]
```
#### remove
```python
>>> lst = [1, 2, 3]
>>> lst.remove(2)
[1, 3]
```
#### extend
```python
>>> lst = [1, 2]
>>> lst.extend([3, 4])
[1, 2, 3, 4]
```
#### clear
```python
>>> lst = [1, 2, 3]
>>> lst.clear()
[]
```
#### sort
```python
>>> lst = [3, 1, 2]
>>> lst.sort()
[1, 2, 3]
```
#### reverse
```python
>>> lst = [1, 2, 3]
>>> lst.reverse()
[3, 2, 1]
```
#### copy
```python
>>> lst = [1, 2, 3]
>>> new_lst = lst.copy()
[1, 2, 3]
```
#### count
```python
>>> lst = [1, 2, 2, 3]
>>> lst.count(2)
2
```
#### index
```python
>>> lst = [10, 20, 30]
>>> lst.index(20)
1
```
#### Вложенный список
```python
>>> spis2=[spis1,[4,5,6,7]] #здесь элементами являются два спискa
>>> spis2
[[111, (5-9j), 'New item'], [4, 5, 6, 7]]
```
```python
>>> spis2[0][1] #обращение к элементу списка spis1
(5-9j)
>>> spis2[0][1]=78 #Убедитесь, что значение элемента заменено на 78
>>> spis1
[111, 78, 'New item']
```
При создании spis2 = [spis1, [4,5,6,7]] первый элемент списка spis2 не копирует spis1, а хранит ссылку на него.
Поэтому когда мы изменили элемент spis2[0][1] = 78, это изменение произошло непосредственно в объекте spis1.
В результате сам spis1 изменился, и его второй элемент 'Список' был заменён на 78.
```python
>>> my_list = [42, "Привет, мир!", True, [1, 2, 3]]
>>> print(my_list)
[42, 'Привет, мир!', True, [1, 2, 3]]
```
### 8.2 Объект - кортеж
Объект-кортеж похож на список, но его нельзя изменить – кортежи являются последовательностями, как списки, но они являются неизменяемыми, как строки. В отличие от списка литерал кортежа заключается в круглые, а не в квадратные скобки. Кортежи также поддер­живают включение в них объектов различных типов и операции, типич­ные для последовательностей.
```python
>>> kort1=(222,'Kortezh',77+8j)
>>> kort1
(222, 'Kortezh', (77+8j))
>>> kort1= kort1+(1,2)
>>> kort1
(222, 'Kortezh', (77+8j), 1, 2)
>>> kort1= kort1+(ss1b,)
>>> kort1
(222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n <Подольский НК>')
>>> kort2=kort1[:2]+kort1[3:]
>>> kort2
(222, 'Kortezh', 1, 2, 'Меня зовут: \n <Подольский НК>')
```
#### Важные методы кортежа
##### Определение индекса заданного элемента:
``` python
  >>> kort1.index(2)
  4
```
##### Подсчет числа вхождений заданного элемента в кортеже:
``` python
>>> kort1.count(222)
1
```
##### Операция замены элемента кортежа
``` python
>>> kort1[2]=90  
Traceback (most recent call last):
File "<pyshell#112>", line 1, in <module>
kort1[2]=90
TypeError: 'tuple' object does not support item assignment
```
#### Создание объекта-кортежа с элементами разных типов:
``` python
>>> my_tuple = (99, "Python", [1, 2, 3], (True, False))
>>> print(my_tuple)
(99, 'Python', [1, 2, 3], (True, False))
```
### 8.3 Объект - словарь
``` python
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45}
```
``` python
>>> dic1['Orel']
56
```
``` python
>>> dic1['Pskov']=78
>>> dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
```
```python
>>> sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
>>> sorted(dic1.values())
[45, 56, 78, 145]
```
##### Создадим словарь
``` python
>>> dic2={1:'mean',2:'standart deviation',3:'correlation'}
>>> dic2
{1: 'mean', 2: 'standart deviation', 3: 'correlation'}
>>> dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
>>> dic3
{'statistics': {1: 'mean', 2: 'standart deviation', 3: 'correlation'}, 'POAS': ['base', 'elementary', 'programming']}
>>> dic3['statistics'][2]
'standart deviation'
>>> dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
>>> dic4
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня зовут: \n <Подольский НК>'}
>>> dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
>>> dic5
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут: \n <Подольский НК>'}
```
```python
# кортеж с 7 элементами
>>> keys_tuple = ('a', 'b', 'c', 'd', 'e', 'f', 'g')
# список с 5 элементами
>>> values_list = [1, 2, 3, 4, 5]
>>> my_dict = dict(zip(keys_tuple, values_list))
>>> print(my_dict)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
>>> len(my_dict)
5
```
- У нас есть **7 ключей** и **5 значений**.
- Функция zip работает до тех пор, пока хватает элементов в самой короткой последовательности.
- Так как в списке только 5 элементов, то сформировалось 5 пар «ключ–значение».
### 8.4 Объект-множество – это неупорядоченная совокупность неповторяющихся элементов
```python
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
>>> mnoz1
{'датчик', 'линия связи', 'двигатель', 'микропроцессор'}
>>> len(mnoz1)
4
>>> 'датчик' in mnoz1
True
>>> mnoz1.add('реле')
>>> mnoz1
{'двигатель', 'датчик', 'микропроцессор', 'реле', 'линия связи'}
>>> mnoz1.remove('линия связи')
>>> mnoz1
{'двигатель', 'датчик', 'микропроцессор', 'реле'}
Самостоятельно придумал объект-множество с элементами разных
``` python
>>> mnoz2 = {1, 'число',(15, 30, 45), 3.14}
>>> mnoz2
{1, (15, 30, 45), 3.14, 'число'}
>>> len(mnoz2)  # количество элементов
4
>>> 'число' in mnoz2 
True
>>> mnoz2.add(False)
>>> mnoz2
>>> {False, 1, 3.14, 'число', (15, 30, 45)}
>>> mnoz2.remove(1)
>>> mnoz2
{False, 3.14, 'число', (15, 30, 45)}
```
### 1.16 Завершаем работу со средой.
Выбираем File и exit.
### 1.17 Контрольные вопросы.