## Отчет по теме 2 Румянцев Вадим, А-03-23 ## 2. Базовые типы объектов ## 2.1 Настройка текущего каталога ```py import os os.chdir('D:\\Уник\\5 семестр\\Программное обеспечение автоматизированных систем\\python-labs\\TEMA2\\') os.getcwd() 'D:\\Уник\\5 семестр\\Программное обеспечение автоматизированных систем\\python-labs\\TEMA2' ``` ## 2.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__', '__dddddddddddddrrshift__', '__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) del f1,f2 dir() ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os'] ``` ## 2.3 Изучение правил объектов в Python ```py gg1=1.6 #значение в виде вещественного числа hh1='Строка' #значение в виде символьной строки 73sr=3 #неправильное имя – начинается с цифры - будет диагностика! SyntaxError: invalid decimal literal and=7 #недопустимое имя – совпадает с ключевым словом - будет диагностика! SyntaxError: invalid syntax ``` ## 2.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'] keywords = keyword.kwlist keywords ['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'] ``` ## 2.5.1 Вывод списка встроенных идентификаторов с помощью инструкций ```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'] ``` ## 2.5.2 Изучение значения функций ```py help (abs) Help on built-in function abs in module builtins: abs(x, /) Return the absolute value of the argument. help(len) Help on built-in function len in module builtins: len(obj, /) Return the number of items in a container. help(max) Help on built-in function max in module builtins: max(...) max(iterable, *[, default=obj, key=func]) -> value max(arg1, arg2, *args, *[, key=func]) -> value With a single iterable argument, return its biggest item. The default keyword-only argument specifies an object to return if the provided iterable is empty. With two or more positional arguments, return the largest argument. help(min) Help on built-in function min in module builtins: min(...) min(iterable, *[, default=obj, key=func]) -> value min(arg1, arg2, *args, *[, key=func]) -> value With a single iterable argument, return its smallest item. The default keyword-only argument specifies an object to return if the provided iterable is empty. With two or more positional arguments, return the smallest argument. help(pow) Help on built-in function pow in module builtins: pow(base, exp, mod=None) Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments Some types, such as ints, are able to use a more efficient algorithm when invoked using the three argument form. help(round) Help on built-in function round in module builtins: round(number, ndigits=None) Round a number to a given precision in decimal digits. The return value is an integer if ndigits is omitted or None. Otherwise the return value has the same type as the number. ndigits may be negative. help(sorted) Help on built-in function sorted in module builtins: sorted(iterable, /, *, key=None, reverse=False) Return a new list containing all items from the iterable in ascending order. A custom key function can be supplied to customize the sort order, and the reverse flag can be set to request the result in descending order. help(sum) Help on built-in function sum in module builtins: sum(iterable, /, start=0) Return the sum of a 'start' value (default: 0) plus an iterable of numbers When the iterable is empty, return the start value. This function is intended specifically for use with numeric values and may reject non-numeric types. help(zip) Help on class zip in module builtins: class zip(object) | zip(*iterables, strict=False) | | The zip object yields n-length tuples, where n is the number of iterables | passed as positional arguments to zip(). The i-th element in every tuple | comes from the i-th iterable argument to zip(). This continues until the | shortest argument is exhausted. | | If strict is true and one of the arguments is exhausted before the others, | raise a ValueError. | | >>> list(zip('abcdefg', range(3), range(4))) | [('a', 0, 0), ('b', 1, 1), ('c', 2, 2)] | | Methods defined here: | | __getattribute__(self, name, /) | Return getattr(self, name). | | __iter__(self, /) | Implement iter(self). | | __next__(self, /) | Implement next(self). | | __reduce__(self, /) | Return state information for pickling. | | __setstate__(self, object, /) | Set state information for unpickling. | | ---------------------------------------------------------------------- | Static methods defined here: | | __new__(*args, **kwargs) | Create and return a new object. See help(type) for accurate signature. ``` ## 2.6 Убедимся, что язык чувствителен к регистру ```py Ggl=45 Ggl;ggl 45 Traceback (most recent call last): File "", line 1, in Ggl;ggl NameError: name 'ggl' is not defined. Did you mean: 'Ggl'? ``` ## 2.7 Изучение простых базовых типов объектов ## 2.7.1 Логический тип (bool) ```py bb1=True; bb2=False bb1;bb2 True False type(bb1) #функция, показывающая тип (класс) объекта ``` ## 2.7.2 Другие простые типы ```py ii1=-1234567890 ff1=-8.9876e-12 #экспоненциальная форма записи вещественного числа dv1=0b1101010 #Это – двоичное число. В объекте какого класса оно сохранено? type(dv1) vsm1=0o52765 #Это – восьмеричное число shest1=0x7109af6 #Это – шестнадцатеричное число cc1=2-3j a=3.67; b=-0.45 cc2=complex(a,b) #Создается комплексное число cc2 (3.67-0.45j) ``` ## 2.7.3 Строка символов ```py ss1='Это - строка символов' ss1 'Это - строка символов' ss1="Это - строка символов" ss1 'Это - строка символов' ss1a="Это - \" строка символов \", \n \t выводимая на двух строках" 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 "", line 1, in ss1[4]='=' # Будет диагностика! TypeError: 'str' object does not support item assignment ss1=ss1[:4]+'='+ss1[5:] ss1 'Это = строка символов' ``` ## 2.7.4 Создание срезов из переменной ss1b ```py ss1b[0] 'М' ss1b[0:20:4] 'М у\nу' ss1b=ss1b[:10]+':'+'\n <'+ss1b[11:-1]+'>' ss1b[0:16:4] 'М у ' ``` ## 2.7.5 Создание объектов разных типов ```py # 1. Целое число (int) integer_obj = 42 # 2. Вещественное число (float) float_obj = 3.14 # 3. Строка (str) string_obj = "Hello, World!" # 4. Логический тип (bool) bool_obj = True ``` ## 2.8 Изучение объектов более сложних типов ## 2.8.1 Объект типа "Список" ```py spis1=[111,'Spisok',5-9j] spis1 [111, 'Spisok', (5-9j)] stup=[0,0,1,1,1,1,1,1,1] stup [0, 0, 1, 1, 1, 1, 1, 1, 1] spis=[1,2,3,4, 5,6,7, 8,9,10] spis [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] spis1[-1] (5-9j) stup[-8::2] [0, 1, 1, 1] spis1[1]='Список' spis1 [111, 'Список', (5-9j)] len(spis1) 3 help(spis1.append) Help on built-in function append: append(object, /) method of builtins.list instance Append object to the end of the list. spis1.append('New item') spis1 [111, 'Список', (5-9j), 'New item'] spis1+['New item'] [111, 'Список', (5-9j), 'New item', 'New item'] spis1.pop(1) 'Список' spis1 [111, (5-9j), 'New item'] spis1.append(ss1b) spis1 [111, (5-9j), 'New item', 'Меня зовут:\n < \n <Румянцев В. А.>'] help(insert) Traceback (most recent call last): File "", line 1, in help(insert) NameError: name 'insert' is not defined help(spis1.insert) Help on built-in function insert: insert(index, object, /) method of builtins.list instance Insert object before index. help(spis1.remove) Help on built-in function remove: remove(value, /) method of builtins.list instance Remove first occurrence of value. Raises ValueError if the value is not present. help(spis1.extend) Help on built-in function extend: extend(iterable, /) method of builtins.list instance Extend list by appending elements from the iterable. help(spis1.clear) Help on built-in function clear: clear() method of builtins.list instance Remove all items from list. help(spis1.sort) Help on built-in function sort: sort(*, key=None, reverse=False) method of builtins.list instance Sort the list in ascending order and return None. The sort is in-place (i.e. the list itself is modified) and stable (i.e. the order of two equal elements is maintained). If a key function is given, apply it once to each list item and sort them, ascending or descending, according to their function values. The reverse flag can be set to sort in descending order. help(spis1.sort) Help on built-in function sort: sort(*, key=None, reverse=False) method of builtins.list instance Sort the list in ascending order and return None. The sort is in-place (i.e. the list itself is modified) and stable (i.e. the order of two equal elements is maintained). If a key function is given, apply it once to each list item and sort them, ascending or descending, according to their function values. The reverse flag can be set to sort in descending order. help(spis1.reverse) Help on built-in function reverse: reverse() method of builtins.list instance Reverse *IN PLACE*. help(spis1.copy) Help on built-in function copy: copy() method of builtins.list instance Return a shallow copy of the list. help(spis1.count) Help on built-in function count: count(value, /) method of builtins.list instance Return number of occurrences of value. help(spis1.index) Help on built-in function index: index(value, start=0, stop=9223372036854775807, /) method of builtins.list instance Return first index of value. Raises ValueError if the value is not present. spis2=[spis1,[4,5,6,7]] spis2 [[111, (5-9j), 'New item', 'Меня зовут:\n < \n <Румянцев В. А.>'], [4, 5, 6, 7]] spis2[0][1] (5-9j) spis2[0][1]=78 spis2 [[111, 78, 'New item', 'Меня зовут:\n < \n <Румянцев В. А.>'], [4, 5, 6, 7]] spis1 [111, 78, 'New item', 'Меня зовут:\n < \n <Румянцев В. А.>'] # Элементы списка spis1 отличаются от изначально заданных т.к. список spis2 состоит из списка spis1 и списка [4, 5, 6, 7]. # При изменении списка spis2, а именно списка spis1, меняется изначальное значение элемента списка spis2 - spis1. myspis=[52, 'shjdfbshjidf', True, spis1] myspis [52, 'shjdfbshjidf', True, [111, 78, 'New item', 'Меня зовут:\n < \n <Румянцев В. А.>']] ``` ## 2.8.2 Объект-кортеж ```py 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 < \n <Румянцев В. А.>') kort1.index(2) # Будет получено значение 3 4 #Получено 4 т.к. ss1b был изменен kort1.count(222) #Будет получено значение 1 1 kort1[2]=90 Traceback (most recent call last): File "", line 1, in kort1[2]=90 TypeError: 'tuple' object does not support item assignment ``` ## 2.8.2.1 Создание своего кортежа ```py mykort=(222, 'rtgeh', myspis, kort1) mykort (222, 'rtgeh', [52, 'shjdfbshjidf', True, [111, 78, 'New item', 'Меня зовут:\n < \n <Румянцев В. А.>']], (222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут:\n < \n <Румянцев В. А.>')) ``` ## 2.8.3 создание объекта-словаря ```py dic1={'Saratov':145, 'Orel':56, 'Vologda':45} dic1 {'Saratov': 145, 'Orel': 56, 'Vologda': 45} dic1['Orel'] 56 dic1['Pskov']=78 dic1 {'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78} sorted(dic1.keys()) ['Orel', 'Pskov', 'Saratov', 'Vologda'] sorted(dic1.values()) [45, 56, 78, 145] dic2={1:'mean',2:'standart deviation',3:'correlation'} dic2 {1: 'mean', 2: 'standart deviation', 3: 'correlation'} dic3={'statistics':dic2,'POAS':['base','elementary','programming']} dic3 {'statistics': {1: 'mean', 2: 'standart deviation', 3: 'correlation'}, 'POAS': ['base', 'elementary', 'programming']} dic3['statistics'][2] 'standart deviation' dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)]) dic4 {1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня зовут:\n < \n <Румянцев В. А.>'} dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b])) dic5 {'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут:\n < \n <Румянцев В. А.>'} my_tuple = ("яблоко", "банан", "апельсин", "виноград", "киви", "манго", "груша") my_list = [10, 20, 30, 40, 50] print("Кортеж (7 элементов):", my_tuple) Кортеж (7 элементов): ('яблоко', 'банан', 'апельсин', 'виноград', 'киви', 'манго', 'груша') print("Список (5 элементов):", my_list) Список (5 элементов): [10, 20, 30, 40, 50] result_dict = dict(zip(my_tuple, my_list)) result_dict {'яблоко': 10, 'банан': 20, 'апельсин': 30, 'виноград': 40, 'киви': 50} # Функция Zip объединяет илементы из нескольких последовательностей. # Когда самая короткая последовательность заканчивается, функция прекращает свою работу ``` ## 2.8.4 Создание объекта-множества ```py mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'} mnoz1 {'двигатель', 'микропроцессор', 'датчик', 'линия связи'} len(mnoz1) 4 'датчик' in mnoz1 True mnoz1.add('реле') mnoz1 {'двигатель', 'датчик', 'микропроцессор', 'линия связи', 'реле'} mnoz1.remove('линия связи') mnoz1 {'двигатель', 'датчик', 'микропроцессор', 'реле'} ``` ## 2.8.4.1 Создание собственного объекта-множества ```py mymnoz = { 1, 'computer', my_tuple} mymnoz {('яблоко', 'банан', 'апельсин', 'виноград', 'киви', 'манго', 'груша'), 1, 'computer'} mymnoz.add('system') mymnoz {('яблоко', 'банан', 'апельсин', 'виноград', 'киви', 'манго', 'груша'), 1, 'system', 'computer'} mymnoz.remove(my_tuple) mymnoz {1, 'system', 'computer'} ```