Сравнить коммиты
16 Коммитов
main
...
ac2fd98764
| Автор | SHA1 | Дата | |
|---|---|---|---|
| ac2fd98764 | |||
| 6a56424c81 | |||
| 067cf26fda | |||
| 7618bbeb2f | |||
| d988fc8b25 | |||
| fa60788940 | |||
| acec586f5c | |||
| 2622962676 | |||
| 40717bf6b9 | |||
| 018b00b0d8 | |||
| a77984b71e | |||
| 2b8221e869 | |||
| bbfe0cbd4a | |||
| ae33519ad6 | |||
| 16ff9e3ab1 | |||
| 09fe594785 |
5
TEMA1/Pr0.py
Обычный файл
5
TEMA1/Pr0.py
Обычный файл
@@ -0,0 +1,5 @@
|
||||
#Программа по Теме 1 <Цветкова Т. А.>
|
||||
print('Hello')
|
||||
h=input('Your name=')
|
||||
import os
|
||||
os.chdir(r'C:\\Users\\Admin\\Documents\\Tsvetkova\\python-labs\\TEMA1')
|
||||
156
TEMA1/laba1.md
Обычный файл
156
TEMA1/laba1.md
Обычный файл
@@ -0,0 +1,156 @@
|
||||
# Отчет.
|
||||
## Модуль 1 Основы языка программирования Python.
|
||||
## Тема 1. Знакомство с интерпретатором и интерактивной оболочкой IDLE.
|
||||
|
||||
## Пункт1:
|
||||
Была создана папка и распакован архив Tema1/
|
||||
|
||||
## Пункт2:
|
||||
Запустили на выполнение интерпетатор Python 3.11
|
||||
|
||||
## Пункт3:
|
||||
Ввели команду print и убедились в ее работоспособности.
|
||||
```py
|
||||
>>> print('Hello')
|
||||
Hello
|
||||
```
|
||||
|
||||
## Пункт4:
|
||||
Изучили команду input.
|
||||
```py
|
||||
>>> h=input('Your Name=')
|
||||
Your Name=Tanya
|
||||
>>> h
|
||||
'Tanya'
|
||||
```
|
||||
|
||||
## Пункт5:
|
||||
Завершили работу интерпретатора с помощью команды
|
||||
```py
|
||||
>>>exit().
|
||||
```
|
||||
|
||||
## Пункт6:
|
||||
Запустили IDLE Python 3.11
|
||||
|
||||
## Пункт7:
|
||||
Изучили устройство главного командного окна
|
||||
|
||||
## Пункт8:
|
||||
Ввели инструкции настройки рабочего каталога среды
|
||||
```py
|
||||
>>>import os
|
||||
>>>os.chdir(r'C:\\Users\\Admin\\Documents\\Tsvetkova\\python-labs\\TEMA1')
|
||||
```
|
||||
|
||||
## Пункт9:
|
||||
Установили в среде шрифт типа Arial CYR, размер 11, размер начального окна - высота 50 символов, ширина 100 символов, подкраска комментариев - коричневая
|
||||
|
||||
## Пункт10:
|
||||
Создали новый фйл Pr0.py
|
||||
```py
|
||||
Программа по Теме 1 <ЦветковаТА>
|
||||
>>>print('Hello')
|
||||
>>>h=input('Your name=')
|
||||
>>>import os
|
||||
>>>os.chdir('C:\\Users\\Admin\\Desktop\\TsvetkovaTA\\Tema1\\')
|
||||
```
|
||||
|
||||
Запустили модуль и получили результат
|
||||
```py
|
||||
>>>import Pr0
|
||||
Hello
|
||||
Your name=Tanya
|
||||
```
|
||||
|
||||
## Пункт11:
|
||||
Запустили модуль prb1
|
||||
```py
|
||||
>>>import prb1
|
||||
Как Вас зовут? Таня
|
||||
Привет, Таня
|
||||
```
|
||||
|
||||
## Пункт12:
|
||||
Попробовали открыть файл Pr0.cpython-34.pyc и поняли, что из-за скомпилированного бинарного файла текстовый редактор как раз-таки выдает ошибку, тк не может считать файл .рус, ожидая стандартную для него кодировку.
|
||||
Комплиляция программ необходима, чтобы перевести команды из человекопонятной формы в машинный код, который может быть обработан процессором.
|
||||
При выполнении скрипта Python сначала преобразовывает его в байт-код (.рус), а затем уже он компилируется с помощью виртуальный машины.
|
||||
Это ускорит повторную загрузку программы.
|
||||
|
||||
## Пункт13:
|
||||
В текстовом редакторе оболочки IDLE открыли новое окно.
|
||||
Сохранили все из командного окна
|
||||
|
||||
## Пункт14:
|
||||
В разделе помощи можно увидеть следующее
|
||||
```py
|
||||
About IDLE - информация о версии IDLE
|
||||
IDLE Help - документация по самой IDLE
|
||||
Python Docs - документация по языку Python
|
||||
Turtle Demo - окно работы и помощь модуля для работы с графикой turtle
|
||||
```
|
||||
```py
|
||||
>>>help(print)
|
||||
Help on built-in function print in module builtins:
|
||||
|
||||
print(*args, sep=' ', end='\n', file=None, flush=False)
|
||||
Prints the values to a stream, or to sys.stdout by default.
|
||||
|
||||
sep
|
||||
string inserted between values, default a space.
|
||||
end
|
||||
string appended after the last value, default a newline.
|
||||
file
|
||||
a file-like object (stream); defaults to the current sys.stdout.
|
||||
flush
|
||||
whether to forcibly flush the stream.
|
||||
```
|
||||
```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.
|
||||
|
||||
(None, None)
|
||||
```
|
||||
при F1 открывается справочное окно
|
||||
|
||||
## Пункт15:
|
||||
Узнали, что опция Окно (Window)» помогает перемещаться между открытыми окнами
|
||||
```py
|
||||
>>>import tdemo_chaos
|
||||
>>>tdemo_chaos.main()
|
||||
'Done!'
|
||||
```
|
||||
|
||||
Вывели на экран графическое представление
|
||||
программы с часами. Есть и другие примеры программ модуля turtle,
|
||||
которые можно брать за основу собственных программ, изменять или реализовывать
|
||||
свои идеи
|
||||
|
||||
## Пункт16:
|
||||
Звершили работу со средой
|
||||
```py
|
||||
>>>exit
|
||||
```
|
||||
15
TEMA1/protocol.py
Обычный файл
15
TEMA1/protocol.py
Обычный файл
@@ -0,0 +1,15 @@
|
||||
#Программа по Теме 1 <Цветкова Т. А.>
|
||||
|
||||
import os
|
||||
os.chdir(r'C:\\Users\\Admin\\Documents\\Tsvetkova\\python-labs\\TEMA1')
|
||||
|
||||
import Pr0
|
||||
Hello
|
||||
Your name=Tatyana
|
||||
|
||||
import os
|
||||
os.chdir(r'C:\\Users\\Admin\\Documents\\Tsvetkova\\python-labs\\TEMA1')
|
||||
|
||||
import prb1
|
||||
Как Вас зовут? Tatyana
|
||||
Привет, Tatyana
|
||||
604
TEMA2/lab2.md
Обычный файл
604
TEMA2/lab2.md
Обычный файл
@@ -0,0 +1,604 @@
|
||||
# Протокол по Теме 2 <ЦветковаТА>»
|
||||
## пункт2:
|
||||
изучили простые объекты и присваивание
|
||||
```py
|
||||
>>>f1=16; f2=3
|
||||
>>>f1,f2
|
||||
(16, 3)
|
||||
```
|
||||
Или через точку с запятой. тогда друг за другом:
|
||||
```py
|
||||
>>> f1; f2
|
||||
16
|
||||
3
|
||||
```
|
||||
Узнаем какие объекты уже существуют в среде
|
||||
```py
|
||||
>>>dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2']
|
||||
```
|
||||
|
||||
Еще эта функция может показать атрибуты объекта:
|
||||
```py
|
||||
|
||||
>>> dir (f1)
|
||||
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__',
|
||||
'__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__',
|
||||
'__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__',
|
||||
'__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__',
|
||||
'__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__',
|
||||
'__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__',
|
||||
'__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag',
|
||||
'numerator', 'real', 'to_bytes']
|
||||
```
|
||||
Функция del необходима для удаления объекта
|
||||
```py
|
||||
>>> del f1,f2
|
||||
>>>dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
|
||||
```
|
||||
## Пункт3:
|
||||
```py
|
||||
>>>gg1=1.6 #значение в виде вещественного числа
|
||||
>>>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']
|
||||
>>>k=keyword.kwlist
|
||||
k
|
||||
['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:
|
||||
Выведем список встроенных идеентификаторов
|
||||
```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', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
|
||||
```
|
||||
модуль
|
||||
```py
|
||||
>>>abs(-7)
|
||||
7
|
||||
```
|
||||
длинна
|
||||
```py
|
||||
>>>len([1,2])
|
||||
2
|
||||
```
|
||||
максимум и минимум
|
||||
```py
|
||||
>>>max(20,5)
|
||||
20
|
||||
>>>min(20,5)
|
||||
5
|
||||
```
|
||||
|
||||
возведение в степень
|
||||
```py
|
||||
>>>pow(4,2)
|
||||
16
|
||||
```
|
||||
возведение в степень по модулю
|
||||
```py
|
||||
>>>pow (5, 2, 2)
|
||||
1
|
||||
```
|
||||
округление
|
||||
```py
|
||||
>>>round (33.2)
|
||||
33
|
||||
```
|
||||
округление с определенной точностью
|
||||
```py
|
||||
>>>round (33.45826, 3)
|
||||
33.458
|
||||
```
|
||||
сумма
|
||||
```py
|
||||
>>>sum ([2, 5])
|
||||
7
|
||||
```
|
||||
сортировка и иобратная сортировка
|
||||
```py
|
||||
>>>sorted ([5, 4, 18, 40, -6, 0])
|
||||
[-6, 0, 4, 5, 18, 40]
|
||||
>>>sorted ([5, 4, 18, 40, -6, 0], reverse = True)
|
||||
[40, 18, 5, 4, 0, -6]
|
||||
```
|
||||
Объединение объектов в кортеж (возвращается указатель на участок памяти)
|
||||
```py
|
||||
>>> list1 = [1, 2, 3]
|
||||
>>> list2 = [4, 5, 6]
|
||||
>>> zip (list1, list2)
|
||||
<zip object at 0x0000000002C42E88>
|
||||
Это итератор - указатель на объект памяти. Чтобы увидеть сам кортеж, итератор надо
|
||||
преобразовать в другой объект
|
||||
>>> list(zipped)
|
||||
[(1, 4), (2, 5), (3, 6)]
|
||||
```
|
||||
## Пункт6:
|
||||
Регестрочувствительность
|
||||
```py
|
||||
>>>Gg=45
|
||||
>>>Gg
|
||||
45
|
||||
>>>gg
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#39>", line 1, in <module>
|
||||
gg
|
||||
NameError: name 'gg' is not defined. Did you mean: 'Gg'?
|
||||
```
|
||||
## Пункт7:
|
||||
Типы объектов
|
||||
```py
|
||||
>>>bb1=True; bb2=False
|
||||
>>>bb1;bb2
|
||||
True
|
||||
False
|
||||
>>>type(bb1)
|
||||
<class 'bool'>
|
||||
тип (класс) объекта
|
||||
```
|
||||
Целое число (десятичное)
|
||||
```py
|
||||
>>> ii1 = 1234567890
|
||||
>>> type(ii1)
|
||||
<class 'int'>
|
||||
```
|
||||
|
||||
Экспоненциальная форма записи числа
|
||||
```py
|
||||
>>> ff1 = 8.987e-12
|
||||
>>> type(ff1)
|
||||
<class 'float'>
|
||||
```
|
||||
Двоичное число (префикс 0b - binary)
|
||||
```py
|
||||
>>> dv1 = 0b1100101
|
||||
>>> type(bb1)
|
||||
<class 'bool'>
|
||||
```
|
||||
Восьмеричное число (0о - octal)
|
||||
```py
|
||||
>>> vsm1 = 0o52765
|
||||
>>> type(vsm1)
|
||||
<class 'int'>
|
||||
```
|
||||
Шестнадцатеричное число (0х - hexadecimal)
|
||||
```py
|
||||
>>> shest1 = 0x7109af6
|
||||
>>> type(shest1)
|
||||
<class 'int'>
|
||||
```
|
||||
Комплексное число
|
||||
```py
|
||||
>>> cc1 = 2 - 3j
|
||||
>>> type(cc1)
|
||||
<class 'complex'>
|
||||
```
|
||||
```py
|
||||
>>> a = 3.67
|
||||
>>> b = 0.45
|
||||
>>> cc2 = complex (a, b)
|
||||
>>> cc2
|
||||
(3.67+0.45j)
|
||||
>>> type (cc2)
|
||||
<class 'complex'>
|
||||
```
|
||||
Строка символов
|
||||
```py
|
||||
>>> ss1='Это - строка символов'
|
||||
>>> ss1="Это - строка символов"
|
||||
>>> ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
|
||||
>>> print(ss1a)
|
||||
Это - " строка символов ",
|
||||
выводимая на двух строках
|
||||
>>> ss1b= 'Меня зовут: \n <Цветкова ТА>'
|
||||
>>> print(ss1b)
|
||||
Меня зовут:
|
||||
<Цветкова ТА>
|
||||
```
|
||||
```py
|
||||
>>> mnogo="""Нетрудно заметить , что в результате операции
|
||||
... над числами разных типов получается число,
|
||||
... имеющее более сложный тип из тех, которые участвуют в операции."""
|
||||
>>> print(mnogo)
|
||||
Нетрудно заметить , что в результате операции
|
||||
над числами разных типов получается число,
|
||||
имеющее более сложный тип из тех, которые участвуют в операции.
|
||||
```
|
||||
При вводе такой строки символ приглашения в начале строки не появится, пока не будет вновь введены тройные кавычки.
|
||||
|
||||
|
||||
Обратимся к отдельным элементам с помощью квадратных кавычек
|
||||
(нумерация с нуля):
|
||||
```py
|
||||
>>> mnogo[5]
|
||||
'д'
|
||||
```
|
||||
Обращение начиная с последнего элемента:
|
||||
```py
|
||||
>>> ss1b[-1]
|
||||
'>'
|
||||
```
|
||||
Срезы:
|
||||
```py
|
||||
>>> ss1[7:10]
|
||||
'тро'
|
||||
```
|
||||
Срез с шагом в 2:
|
||||
```py
|
||||
>>> ss1[7:14:2]
|
||||
'тоас'
|
||||
```
|
||||
```py
|
||||
>>> ss1[5:-8]
|
||||
' строка '
|
||||
```
|
||||
|
||||
Задав шаг -1, можно вывести строку в обратном порядке:
|
||||
```py
|
||||
>>> ss1[::-1]
|
||||
'воловмис акортс - отЭ'
|
||||
```
|
||||
К элементу можно обратиться как по нумерации с начала, так и с конца:
|
||||
```py
|
||||
>>> ss1[17:3:-2]
|
||||
'омсаот '
|
||||
>>> ss1[-4:3:-2]
|
||||
'омсаот '
|
||||
```
|
||||
|
||||
Строка является неизменяемым объектом
|
||||
```py
|
||||
>>> ss1[4]='=' # Будет диагностика!
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: 'str' object does not support item assignment
|
||||
>>> ss1=ss1[:4]+'='+ss1[5:]
|
||||
>>> print(ss1)
|
||||
Это = строка символов
|
||||
```
|
||||
Новый объект на основе среза из старого:
|
||||
```py
|
||||
>>> ss1b_cut = ss1b [::-1]
|
||||
>>> ss1b_cut
|
||||
'>АТ авоктевЦ< \n :тувоз янеМ'
|
||||
```
|
||||
## Пункт8:
|
||||
Список
|
||||
```py
|
||||
>>> 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]
|
||||
>>> pis=[1,2,3,4,
|
||||
... 5,6,7,
|
||||
... 8,9,10]
|
||||
>>> pis
|
||||
[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
|
||||
```
|
||||
Методы списка
|
||||
Добавление в конец (append)
|
||||
```py
|
||||
>>> 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
|
||||
['111', 'Список', (5-9j), 'New item']
|
||||
>>> spis1+['New item']
|
||||
Только возвращает результат, но не фиксирует такое значение!
|
||||
['111', 'Список', (5-9j), 'New item', 'New item']
|
||||
```
|
||||
Удаление элемента по индексу
|
||||
```py
|
||||
>>> spis1.pop(1)
|
||||
'Список'
|
||||
>>> spis1
|
||||
['111', (5-9j), 'New item', 'Меня зовут: \n <Цветкова ТА>']
|
||||
```
|
||||
Вставка элемента в определенное место по индексу (insert)
|
||||
```py
|
||||
>>> spis1.insert(2, "hello")
|
||||
>>> spis1
|
||||
['111', (5-9j), 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>']
|
||||
```
|
||||
Удаление элемента по значению (remove)
|
||||
```py
|
||||
>>> 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.
|
||||
|
||||
>>> spis1.remove(111)
|
||||
>>> spis1
|
||||
[(5-9j), 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>']
|
||||
```
|
||||
```py
|
||||
>>> spis1.remove('222')
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#39>", line 1, in <module>
|
||||
spis1.remove('222')
|
||||
```
|
||||
Добавление элементов объекта в конец другого объекта (extend)
|
||||
```py
|
||||
>>> help(spis1.extend)
|
||||
Help on built-in function extend:
|
||||
|
||||
extend(iterable, /) method of builtins.list instance
|
||||
Extend list by appending elements from the iterable.
|
||||
>>> end1 = [77, "lab"]
|
||||
>>> spis1.extend(end1)
|
||||
>>> spis1
|
||||
[(5-9j), 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>', '77', 'lab']
|
||||
```
|
||||
|
||||
Полное очищение списка (clear)
|
||||
```py
|
||||
>>> help(spis1.clear)
|
||||
Help on built-in function clear:
|
||||
|
||||
clear() method of builtins.list instance
|
||||
Remove all items from list.
|
||||
|
||||
>>> end1.clear()
|
||||
>>> end1
|
||||
[]
|
||||
```
|
||||
Сортировка списка БЕЗ создания нового объекта (sort)
|
||||
```py
|
||||
>>> 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.
|
||||
>>> abc = [4,7,-3,0]
|
||||
>>> abc.sort(key = abs, reverse = True)
|
||||
>>> abc
|
||||
[7, 4, -3, 0]
|
||||
```
|
||||
При этом некоторые key's не применимы для некоторых типов (у string нет abs,
|
||||
у complex нет длины и т.д.)
|
||||
|
||||
Создание копии списка (copy)
|
||||
```py
|
||||
>>> help(abc.copy)
|
||||
Help on built-in function copy:
|
||||
|
||||
copy() method of builtins.list instance
|
||||
Return a shallow copy of the list.
|
||||
|
||||
>>> abccopy=abc.copy()
|
||||
>>> abccopy
|
||||
[7, 4, -3, 0]
|
||||
```
|
||||
Поиск индекса по значению (index)
|
||||
```py
|
||||
>>> help(abccopy.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.
|
||||
|
||||
>>> abccopy.index(0)
|
||||
3
|
||||
```
|
||||
Подсчет количества элементов по значению (count)
|
||||
```py
|
||||
>>> help(abccopy.count)
|
||||
Help on built-in function count:
|
||||
|
||||
count(value, /) method of builtins.list instance
|
||||
Return number of occurrences of value.
|
||||
|
||||
>>> abccopy.count(4)
|
||||
1
|
||||
```
|
||||
Вложенные списки:
|
||||
```py
|
||||
>>> spis2=[spis1,[4,5,6,7]]
|
||||
>>> spis2
|
||||
[['111', (5-9j), 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>', '77', 'lab'], [4, 5, 6, 7]]
|
||||
>>> spis2[0][1]
|
||||
(5-9j)
|
||||
>>> spis2[0][1]=78
|
||||
>>> spis2
|
||||
[['111', 78, 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>', '77', 'lab'], [4, 5, 6, 7]]
|
||||
>>> spis1
|
||||
[['111', 78, 'hello', 'New item', 'Меня зовут: \n <Цветкова ТА>', '>'
|
||||
```
|
||||
spis1 тоже изменился. Это происходит потому, что python работает не просто с
|
||||
объектами, а с ссылками на участки памяти. То есть, в Python списки передаются по ссылке,
|
||||
а не по значению.
|
||||
|
||||
Кортеж: последовательность как список, но неизменяемая как строка.
|
||||
```py
|
||||
>>> kort1=(222,'Kortezh',77+8j)
|
||||
>>> kort1= kort1+(1,2)
|
||||
>>> kort1= kort1+(ss1b,)
|
||||
>>> kort1
|
||||
(222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n <Цветкова ТА>')
|
||||
>>> kort2=kort1[:2]+kort1[3:]
|
||||
>>> kort2
|
||||
(222, 'Kortezh', 1, 2, 'Меня зовут: \n <Цветкова ТА>')
|
||||
>>> kort1.index(2)
|
||||
4
|
||||
>>> kort1.count(222)
|
||||
1
|
||||
>>> kort1[2]=90
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: 'tuple' object does not support item assignment
|
||||
>>> kortstr = ("gjgvu", 4, [1,2,3], (1,2))
|
||||
>>> kortstr
|
||||
('gjgvu', 4, [1, 2, 3], (1, 2))
|
||||
>>> type(kortstr[3])
|
||||
<class 'tuple'>
|
||||
>>> type(kortstr[2])
|
||||
<class 'list'>
|
||||
```
|
||||
|
||||
Словарь (dictionary) - содержит в себе совокупность пар
|
||||
"ключ (key) (неизменяемый)": "значение (value) (любого типа)"
|
||||
```py
|
||||
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
|
||||
>>> dic1
|
||||
{'Saratov': 145, 'Orel': 56, 'Vologda': 45}
|
||||
>>> dic1[1]
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#99>", line 1, in <module> #как видно, обратиться по индексу нельзя
|
||||
dic1[1]
|
||||
KeyError: 1
|
||||
>>> dic1['Orel']
|
||||
56
|
||||
>>> dic1['Pskov']=78
|
||||
>>> dic1
|
||||
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
|
||||
>>> sorted(dic1.keys())
|
||||
['Orel', 'Pskov', 'Saratov', 'Vologda']
|
||||
>>> sorted(dic1.values())
|
||||
[45, 56, 78, 145]
|
||||
>>> dic2={1:'mean',2:'standart deviation',3:'correlation'}
|
||||
>>> dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
|
||||
>>> dic3['statistics'][2]
|
||||
'standart deviation'
|
||||
>>> dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
|
||||
>>> dic4
|
||||
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня зовут: \n <Цветкова ТА>'}
|
||||
>>> dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
|
||||
>>> dic5
|
||||
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут: \n <Цветкова ТА>'}
|
||||
```
|
||||
Создание собственного словаря на основе кортежа из семи элементов и списка из пяти:
|
||||
```py
|
||||
>>> a0223=('спать', 'учиться','работать', 'кмы','барс','лекции','общежитие')
|
||||
>>> a0123=['1', '2', '3', '4', '5']
|
||||
>>> MPEI=dict(zip(a0123, a0223))
|
||||
>>> MPEI
|
||||
{'1': 'спать', '2': 'учиться', '3': 'работать', '4': 'кмы', '5': 'барс'}
|
||||
```
|
||||
В итоговом словаре пять объектов. Это связано с работой функции zip:
|
||||
длина итогового объекта = минимальной длине составляющего
|
||||
объекта.
|
||||
|
||||
Словари: состоят из НЕповторяющихся неизменяемых элементов
|
||||
```py
|
||||
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
|
||||
>>> mnoz1
|
||||
{'двигатель', 'линия связи', 'датчик', 'микропроцессор'}
|
||||
>>> len(mnoz1)
|
||||
4
|
||||
>>> 'датчик' in mnoz1
|
||||
True
|
||||
>>> mnoz1.add('реле')
|
||||
>>> mnoz1.remove('линия связи')
|
||||
>>> mnoz1
|
||||
{'реле', 'микропроцессор', 'датчик', 'двигатель'}
|
||||
```
|
||||
|
||||
|
||||
Общее контрольное задание:
|
||||
|
||||
1. Создать переменную с именем familia и со значением -
|
||||
символьной строкой – своей фамилией в латинской транскрипции.
|
||||
```py
|
||||
>>> familia = 'Tsvetkova'
|
||||
```
|
||||
2. Создать переменную со значением, совпадающим с первой
|
||||
буквой из familia.
|
||||
```py
|
||||
>>> fam1 = familia[0]
|
||||
>>> fam1
|
||||
'T'
|
||||
```
|
||||
3. Создать переменную с именем sp_kw со значением –
|
||||
списком всей ключевых слов языка Python.
|
||||
```py
|
||||
>>> import keyword
|
||||
>>> sp_kw = keyword.kwlist
|
||||
>>> sp_kw
|
||||
['False', 'None', 'True', '__peg_parser__', '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']
|
||||
```
|
||||
4. Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в
|
||||
командном окне IDLE убедитесь, что это значение удалено из списка.
|
||||
```py
|
||||
>>> sp_kw.remove('nonlocal')
|
||||
>>> sp_kw
|
||||
['False', 'None', 'True', '__peg_parser__', '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']
|
||||
```
|
||||
5. Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов
|
||||
из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип
|
||||
переменной – это tuple.
|
||||
```py
|
||||
>>> kort_nam = ('Stas', 'Dana', 'Katya', 'Tanya')
|
||||
>>> type(kort_nam)
|
||||
<class 'tuple'>
|
||||
```
|
||||
6. Напишите инструкцию, добавляющую в kort_nam имена
|
||||
еще двух студентов.
|
||||
```py
|
||||
>>> kort_nam += ('Andrey', 'Nastya')
|
||||
>>> kort_nam
|
||||
('Stas', 'Dana', 'Katya', 'Tanya', 'Andrey', 'Nastya')
|
||||
```
|
||||
7. Напишите инструкцию, позволяющую определить, сколько раз в
|
||||
кортеже присутствуют студенты с именем «Дима».
|
||||
```py
|
||||
>>> kort_nam.count("Dima")
|
||||
0
|
||||
```
|
||||
8. Создайте словарь dict_bas, в котором ключами являются русские
|
||||
названия типов переменных, использованных в предыдущих операторах,
|
||||
а значениями – ранее созданные переменные, соответствующие этим типам.
|
||||
```py
|
||||
>>> dict_bas = {"строка": familia, "символ": fam1, "список": sp_kw,
|
||||
"кортеж": kort_nam,}
|
||||
>>> dict_bas
|
||||
{'строка': 'Tsvetkova', 'символ': 'T', 'список': ['False', 'None', 'True',
|
||||
'__peg_parser__', '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'], 'кортеж': ('Stas', 'Dana', 'Katya', 'Tanya', 'Andrey', 'Nastya')}
|
||||
```
|
||||
48
TEMA3/Test.md
Обычный файл
48
TEMA3/Test.md
Обычный файл
@@ -0,0 +1,48 @@
|
||||
## 1)Для чего предназначено предложение "Окно (Window)" главного меню?
|
||||
Для быстрого переключения между различными открытыми окнами в среде IDLE
|
||||
|
||||
## 2)Создайте объект-кортеж с 5 произвольными двоичными элементами. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
|
||||
```py
|
||||
>>> bin(4)
|
||||
'0b100'
|
||||
>>> bin(6)
|
||||
'0b110'
|
||||
>>> bin(7)
|
||||
'0b111'
|
||||
>>> bin(44)
|
||||
'0b101100'
|
||||
>>> bin(99)
|
||||
'0b1100011'
|
||||
>>> k=(0b100, 0b110, 0b111, 0b101100,0b1100011)
|
||||
>>> type(k)
|
||||
<class 'tuple'>
|
||||
>>> dir(k)
|
||||
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
|
||||
|
||||
```
|
||||
## 3)Напишите инструкцию создания нового кортежа, в который включите два последних элемента ранее созданного кортежа, и два элемента - символы "a" и "b". Отобразите созданный объект на экране.
|
||||
```py
|
||||
>>> k1=k[-2:]+('a','b')
|
||||
>>> k1
|
||||
(44, 99, 'a', 'b')
|
||||
```
|
||||
## 4) Преобразуйте кортеж в список. Вставьте в качестве второго элемента списка значение "Автоматизированная система". Отобразите полученный объект.
|
||||
```py
|
||||
>>> spisok=list(k1)
|
||||
>>> spisok.insert(1, 'Автоматизированная система')
|
||||
>>> spisok
|
||||
[44, 'Автоматизированная система', 99, 'a', 'b']
|
||||
```
|
||||
## 5) Напишите инструкции, обеспечивающие подсчет суммы числовых элементов кортежа. С использованием формата отобразите результат по шаблону: "Сумма элементов=:".
|
||||
```py
|
||||
>>> sum_rez=0
|
||||
>>> for element in k1:
|
||||
... if type(element)==int:
|
||||
... sum_rez += element
|
||||
...
|
||||
>>> sum_rez
|
||||
143
|
||||
>>> s="Сумма элементов=:"+str(sum_rez)
|
||||
>>> s
|
||||
'Сумма элементов=:143'
|
||||
```
|
||||
813
TEMA3/lab3.md
Обычный файл
813
TEMA3/lab3.md
Обычный файл
@@ -0,0 +1,813 @@
|
||||
# Отчет
|
||||
## Тема 3.
|
||||
Операции с объектами
|
||||
## Пункт 2.
|
||||
Преобразование простых базисов типов объектов
|
||||
## 2.1 Преобразование в логический тип с помощью функции bool(<Объект>)
|
||||
```py
|
||||
>>>logiz1=bool(56)
|
||||
>>>logiz1
|
||||
True
|
||||
>>>logiz2=bool(0)
|
||||
>>>logiz2
|
||||
False
|
||||
>>>logiz3=bool("Beta")
|
||||
>>>logiz3
|
||||
True
|
||||
>>>logiz4=bool("")
|
||||
>>>logiz4
|
||||
False
|
||||
```
|
||||
## 2.2 Преобразование в целое десятичное число
|
||||
```py
|
||||
>>>tt1= int(198.6)
|
||||
>>>tt1
|
||||
198
|
||||
>>>tt2=int('-76')
|
||||
>>>tt2
|
||||
-76
|
||||
>>>tt3= int('B',16)
|
||||
>>>tt3
|
||||
11
|
||||
>>>tt4=int("71",8)
|
||||
>>>tt4
|
||||
57
|
||||
>>> tt5=int("98.76")
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#34>", line 1, in <module>
|
||||
tt5=int("98.76")
|
||||
ValueError: invalid literal for int() with base 10: '98.76'
|
||||
```
|
||||
Функция int() может преобразовывать в целое число только строки, которые содержат целое число (например, "98"). Строка "98.76" содержит десятичную точку, поэтому возникает ошибка.
|
||||
Решить эту проблему можно так:
|
||||
```py
|
||||
>>>tt5 = int(float("98.76"))
|
||||
>>>tt5
|
||||
98
|
||||
```
|
||||
## 2.3 Преобразование десятичных чисел в другие системы счисления
|
||||
```py
|
||||
>>>hh=123
|
||||
>>>dv1=bin(hh) #в двоичную сс
|
||||
>>>dv1
|
||||
'0b1111011'
|
||||
>>>vos1=oct(hh) #в восьмеричную сс
|
||||
>>>vos1
|
||||
'0o173'
|
||||
>>>shs1=hex(hh) #в шеснадцатеричную сс
|
||||
>>>shs1
|
||||
'0x7b'
|
||||
```
|
||||
Для проверки выполним обратные преобразования
|
||||
|
||||
```py
|
||||
>>>int (dv1,2)
|
||||
123
|
||||
>>int(vos1,8)
|
||||
123
|
||||
>>int(shs1,16)
|
||||
123
|
||||
```
|
||||
## Пункт 3.
|
||||
Преобразование более сложных базовых типов объектов
|
||||
## 3.1 Преобразование в строку символов с помощью функции str(<Объект>)
|
||||
```py
|
||||
>>>strk=str(23.6)
|
||||
>>>strk
|
||||
'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 Преобразование элементов объекта в список с помощью функции list(<Объект>)
|
||||
```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']
|
||||
>>> spis4 = list({"A":1,"B":2,"C":9}.values())
|
||||
>>> spis4
|
||||
[1, 2, 9]
|
||||
```
|
||||
## 3.3 Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>)
|
||||
```py
|
||||
>>>kort7=tuple('Строка символов') #Преобразование строки символов в кортеж
|
||||
>>>kort7
|
||||
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
|
||||
|
||||
>>>kort8=tuple(spis2) #Преобразование списка в кортеж
|
||||
>>>kort8
|
||||
(124, 236, -15, 908)
|
||||
>>>kort9=tuple({"A":1,"B":2,"C":9}) #Преобразование словаря в кортеж
|
||||
>>>kort9
|
||||
('A', 'B', 'C')
|
||||
>>> kort9 = tuple(({"A":1,"B":2,"C":9}.values()))
|
||||
>>> kort9
|
||||
(1, 2, 9)
|
||||
```
|
||||
## 3.4. Удаление объектов
|
||||
```py
|
||||
>>>del strk5, kort8
|
||||
Проверим
|
||||
>>>dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'dv1', 'hh', 'kort7', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'shs1', 'spis1', 'spis2', 'spis3', 'spis4', 'strk', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'tt5', 'vos1']
|
||||
```
|
||||
Создадим строку со своей фамилией и инициалами, преобразуем её в список, затем список – в кортеж и, наконец, кортеж – в строку.
|
||||
```py
|
||||
>>> f= 'ЦветковаТА'
|
||||
>>> spis= list(f)
|
||||
>>> spis
|
||||
['Ц', 'в', 'е', 'т', 'к', 'о', 'в', 'а', 'Т', 'А']
|
||||
>>> k=tuple(spis)
|
||||
>>> k
|
||||
('Ц', 'в', 'е', 'т', 'к', 'о', 'в', 'а', 'Т', 'А')
|
||||
>>> kk=str(k)
|
||||
>>> kk
|
||||
"('Ц', 'в', 'е', 'т', 'к', 'о', 'в', 'а', 'Т', 'А')"
|
||||
>>> sttr = ''.join(k)
|
||||
>>> sttr
|
||||
'ЦветковаТА'
|
||||
```
|
||||
## Пункт 4. Арифметические операции.
|
||||
## 4.1. Сложение и вычитание (+ и -)
|
||||
```py
|
||||
>>> 12+7+90
|
||||
109
|
||||
>>> 5.689e-1 - 0.456
|
||||
0.11289999999999994
|
||||
>>> 23.6+54
|
||||
77.6
|
||||
>>> 14-56.7+89
|
||||
46.3
|
||||
```
|
||||
## 4.2. Умножение (*)
|
||||
```py
|
||||
>>> -6.7*12
|
||||
-80.4
|
||||
```
|
||||
## 4.3. Деление (/). Результатом деления всегда будет вещественное число!
|
||||
```py
|
||||
>>> -234.5/6
|
||||
-39.083333333333336
|
||||
>>> a=178/45
|
||||
>>> a
|
||||
3.9555555555555557
|
||||
>>> type(a)
|
||||
<class 'float'>
|
||||
```
|
||||
## 4.4. Деление с округлением вниз (//). Здесь результат может быть целым или вещественным.
|
||||
```py
|
||||
>>> b=178//45
|
||||
>>> b
|
||||
3
|
||||
>>> type(b)
|
||||
<class 'int'>
|
||||
>>> c=-24.6//12.1
|
||||
>>> c
|
||||
-3.0
|
||||
>>> type(c)
|
||||
<class 'float'>
|
||||
```
|
||||
## 4.5. Получение остатка от деления (%).
|
||||
```py
|
||||
>>> 148%33
|
||||
16
|
||||
>>> 12.6%3.8
|
||||
1.2000000000000002
|
||||
>>> 56.97%6
|
||||
2.969999999999999
|
||||
```
|
||||
## 4.6. Возведение в степень (**).
|
||||
```py
|
||||
>>> 14**3
|
||||
2744
|
||||
>>> e=2.7**3.6
|
||||
>>> e
|
||||
35.719843790663525
|
||||
>>> d=2.7**3
|
||||
>>> d
|
||||
19.683000000000003
|
||||
```
|
||||
Попробуем проделать арифметические операции над комплексными числами. Создадим два
|
||||
комплексных числа
|
||||
```py
|
||||
>>> k1=(2+1j)
|
||||
>>> k2=(1+2j)
|
||||
>>> k1+k2
|
||||
(3+3j)
|
||||
>>> k2-k1
|
||||
(-1+1j)
|
||||
>>> k1*k2
|
||||
5j
|
||||
>>> k1/k2
|
||||
(0.8-0.6j)
|
||||
>>> k1**k2
|
||||
(-0.42589434775182566+0.7753703444218832j)
|
||||
>>> k1//k2
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
|
||||
>>>k1//2
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#115>", line 1, in <module>
|
||||
k1//2
|
||||
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
|
||||
>>> k1%k2
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
|
||||
>>>k1%2
|
||||
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
|
||||
|
||||
```
|
||||
## Пункт 5. Операции с двоичными представлениями целых чисел.
|
||||
|
||||
## 5.1 Двоичная инверсия (~). Значение каждого бита в представлении числа заменяется на противоположное значение (0 на 1, 1 на 0)
|
||||
```py
|
||||
>>> dv1=9
|
||||
>>> dv2=~dv1
|
||||
>>> dv2
|
||||
-10
|
||||
```
|
||||
## 5.2 Двоичное «И» (&) – побитовое совпадение двоичных представлений чисел
|
||||
```py
|
||||
>>> 7&9
|
||||
1
|
||||
>>> 7&8
|
||||
0
|
||||
```
|
||||
Проверим
|
||||
```py
|
||||
>>> bin(7)
|
||||
'0b111'
|
||||
>>> bin(9)
|
||||
'0b1001'
|
||||
>>> bin(7&9)
|
||||
'0b1'
|
||||
```
|
||||
## 5.3 Двоичное «ИЛИ» (|) – побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда равны 0
|
||||
```py
|
||||
>>> 7|9 # 0111 или 1001 = 1111
|
||||
15
|
||||
>>> 7|8 # 0111 или 1000 = 1111
|
||||
|
||||
15
|
||||
>>> 14|5 # 1110 или 0101 = 1111
|
||||
15
|
||||
>>> bin(15)
|
||||
'0b1111'
|
||||
```
|
||||
## 5.4. Двоичное «исключающее ИЛИ»(^) - побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда имеют одинаковые значения – оба 0 или оба 1.
|
||||
```py
|
||||
>>> 14^5 #1110 ^ 0101 = 1011
|
||||
11
|
||||
>>> bin(11)
|
||||
'0b1011'
|
||||
>>> bin(14)
|
||||
'0b1110'
|
||||
>>> bin(5)
|
||||
'0b101'
|
||||
```
|
||||
## 5.5 Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева.
|
||||
```py
|
||||
>>> h=14
|
||||
>>> bin(14)
|
||||
'0b1110'
|
||||
>>> g=h<<2
|
||||
>>> bin(g)
|
||||
'0b111000'
|
||||
>>> g1=h>>1
|
||||
>>> bin(g1)
|
||||
'0b111'
|
||||
>>> g2=h>>2
|
||||
>>> bin(g2)
|
||||
'0b11'
|
||||
```
|
||||
Придумайте два двоичных числа, не менее чем с 7 знаками, и попробуйте выполнить с ними разные операции.
|
||||
```py
|
||||
>>> bin(76)
|
||||
'0b1001100'
|
||||
>>> bin(112)
|
||||
'0b1110000'
|
||||
>>> 76&112
|
||||
64
|
||||
>>> bin(64)
|
||||
'0b1000000'
|
||||
>>> 76|112
|
||||
124
|
||||
>>> bin(124)
|
||||
'0b1111100'
|
||||
>>> 76^112
|
||||
60
|
||||
>>> g=76<<2
|
||||
>>> g
|
||||
304
|
||||
>>> bin(g)
|
||||
'0b100110000'
|
||||
```
|
||||
## 6. Операции при работе с последовательностями (строками, списками, кортежами).
|
||||
## 6.1. Объединение последовательностей (конкатенация)(+)
|
||||
```py
|
||||
>>>'Система '+'регулирования' #Соединение двух строк символов
|
||||
'Система регулирования'
|
||||
>>>['abc','de','fg']+['hi','jkl'] # Объединение двух списков
|
||||
['abc', 'de', 'fg', 'hi', 'jkl']
|
||||
>>>('abc','de','fg')+('hi','jkl') # Объединение двух кортежей
|
||||
('abc', 'de', 'fg', 'hi', 'jkl')
|
||||
```
|
||||
## 6.2 Повторение (*)
|
||||
```py
|
||||
>>> 'ля-'*5
|
||||
'ля-ля-ля-ля-ля-'
|
||||
>>> ['ку','-']*3
|
||||
['ку', '-', 'ку', '-', 'ку', '-']
|
||||
|
||||
>>> ('кис','-')*4
|
||||
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
|
||||
>>> signal1=[0]*3+[1]*99
|
||||
>>> signal1
|
||||
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
>>> signal2=(0,)*3+(1,)*5+(0,)*7
|
||||
>>> signal2
|
||||
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
|
||||
```
|
||||
## 6.3. Проверка наличия заданного элемента в последовательности (in)
|
||||
```py
|
||||
>>> stroka='Система автоматического управления'
|
||||
>>> 'автомат' in stroka
|
||||
True
|
||||
>>> 'ку' in ['ку','-']*3
|
||||
True
|
||||
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
|
||||
False
|
||||
```
|
||||
## 6.4. Подстановка значений в строку с помощью оператора «%»
|
||||
```py
|
||||
>>> stroka='Температура=%g %s %g'
|
||||
>>> stroka
|
||||
'Температура=%g %s %g'
|
||||
>>> stroka % (16,' меньше ',25)
|
||||
'Температура=16 меньше 25'
|
||||
>>> stroka % (66,' меньше ',77)
|
||||
'Температура=66 меньше 77'
|
||||
>>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
|
||||
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
|
||||
'Температура = 16 меньше 25'
|
||||
```
|
||||
## 7. Оператор присваивания
|
||||
## 7.1. Обычное присваивание значения переменной (=)
|
||||
```py
|
||||
>>> zz=-12
|
||||
```
|
||||
## 7.2. Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
|
||||
```py
|
||||
>>> zz+=5
|
||||
>>> zz
|
||||
-7
|
||||
>>> zz-=3
|
||||
>>> zz
|
||||
-10
|
||||
>>> stroka='Система'
|
||||
>>> stroka+=' регулирования'
|
||||
>>> stroka
|
||||
'Система регулирования'
|
||||
```
|
||||
## 7.3. Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
|
||||
```py
|
||||
>>> zz/=2
|
||||
>>> zz
|
||||
-5.0
|
||||
>>> zz*=5
|
||||
>>> zz
|
||||
-25.0
|
||||
```
|
||||
## 7.4. Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=)
|
||||
```py
|
||||
>>> zz//=2
|
||||
>>> zz
|
||||
-13.0
|
||||
>>> zz**=2
|
||||
>>> zz
|
||||
169.0
|
||||
>>> zz%=5
|
||||
>>> zz
|
||||
4.0
|
||||
```
|
||||
## 7.5. Множественное присваивание
|
||||
Присваивание одного значения нескольким переменным
|
||||
```py
|
||||
>>> w=v=10
|
||||
>>> w
|
||||
10
|
||||
>>> v
|
||||
10
|
||||
```
|
||||
Присваивание кортежа
|
||||
```py
|
||||
>>> n1,n2,n3=(11,-3,'all')
|
||||
>>> n1,n2,n3
|
||||
(11, -3, 'all')
|
||||
```
|
||||
Присваивание списка
|
||||
```py
|
||||
>>> a1,a2,a3=[1,2,3]
|
||||
>>> a1,a2,a3
|
||||
(1, 2, 3)
|
||||
```
|
||||
Присваивание словаря
|
||||
```py
|
||||
>>> s1,s2,s3={'один':1,'два':2,'три':3}
|
||||
>>> s1,s2,s3
|
||||
('один', 'два', 'три')
|
||||
```
|
||||
Если необходимо присвоить значения, то это можно сделать через .values()
|
||||
```py
|
||||
>>> s1,s2,s3={'один':1,'два':2,'три':3}.values()
|
||||
>>> s1,s2,s3
|
||||
(1, 2, 3)
|
||||
```
|
||||
Если необходимо присвоить ключи и значения, то это можно сделать через .items()
|
||||
```py
|
||||
>>> f1,f2,f3={'один':1,'два':2,'три':3}.items()
|
||||
>>> f1,f2,f3
|
||||
(('один', 1), ('два', 2), ('три', 3))
|
||||
>>> f1
|
||||
('один', 1)
|
||||
>>> f2
|
||||
('два', 2)
|
||||
>>> f3
|
||||
('три', 3)
|
||||
```
|
||||
Присваивание множества
|
||||
```py
|
||||
>>> m1,m2,m3={0,89,6}
|
||||
>>> m1,m2,m3
|
||||
(0, 89, 6)
|
||||
```
|
||||
Присваивание строки
|
||||
```py
|
||||
>>> c1,c2,c3='1','2','3'
|
||||
>>> c1,c2,c3
|
||||
('1', '2', '3')
|
||||
```
|
||||
## 8. Логические операции (True или False)
|
||||
## 8.1. Операции сравнение
|
||||
```py
|
||||
>>> v==w
|
||||
True
|
||||
>>> v!=w
|
||||
False
|
||||
>>> v>w
|
||||
False
|
||||
>>> v<w
|
||||
False
|
||||
>>> v>=w
|
||||
True
|
||||
>>> v<=w
|
||||
True
|
||||
>>> 5==4
|
||||
False
|
||||
>>> 5!=4
|
||||
True
|
||||
>>> 5>4
|
||||
True
|
||||
>>> 5<4
|
||||
False
|
||||
>>> 5>=4
|
||||
True
|
||||
>>> 5<=4
|
||||
False
|
||||
```
|
||||
## 8.2. Проверка наличия заданного элемента в последовательности или во множестве, а также про-верка наличия ключа в словаре (in).
|
||||
Операции с множеством
|
||||
```py
|
||||
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
|
||||
>>> 'book' in mnoz1
|
||||
True
|
||||
>>> 'cap' in mnoz1
|
||||
False
|
||||
```
|
||||
Операции со словарем
|
||||
```py
|
||||
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
|
||||
>>> 'Vologda' in dic1
|
||||
True
|
||||
>>> 'Pskov' in dic1
|
||||
False
|
||||
>>> 56 in dic1.values()
|
||||
True
|
||||
```
|
||||
Ещё пример работы со словарем:
|
||||
```py
|
||||
>>> 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. Создание больших логических выражений с использованием соединительных слов: логиче-ское «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not).
|
||||
```py
|
||||
>>> a=17
|
||||
>>> b=-6
|
||||
>>> (a>=b)and('book' in mnoz1)and not('Pskov' in dic1 )
|
||||
True
|
||||
>>> (5==4)or(a==17)
|
||||
True
|
||||
>>> (5==4)and(a==17)
|
||||
False
|
||||
>>> ((5==4)and(a==17))or(not(5==4)and(a==17))
|
||||
True
|
||||
```
|
||||
## 8.4. Проверка ссылок переменных на один и тот же объект (is).
|
||||
|
||||
```py
|
||||
>>> w=v=10
|
||||
>>> w1=['A','B']
|
||||
>>> v1=['A','B']
|
||||
>>> w1==v2
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
NameError: name 'v2' is not defined. Did you mean: 'v'?
|
||||
>>> w1==v1
|
||||
True
|
||||
>>> w1 is v1
|
||||
False
|
||||
>>> w is v
|
||||
True
|
||||
```
|
||||
Оператор is сравнивает адреса объектов в памяти. Целые числа из одной строки хранятся по одному адресу, поэтому is возвращает True. Словари же, созданные отдельно, размещаются в разных местах памяти, и is для них дает False.
|
||||
## Пункт 9. Операции с объектами, выполняемые с помощью методов.
|
||||
Полный список всех атрибутов любого объекта можно получить с использованием функции dir, например,
|
||||
```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("с") #Возвращает кортеж с результатами поиска «с» справа
|
||||
('Микропроцессорная си', 'с', 'тема управления')
|
||||
```
|
||||
## Mетод format
|
||||
Форматирование строки осуществляется в случае, если необходимо в символьную строку подставить значения некоторых объектов, например, полученных в ходе выполнения программы. Часто такую строку затем используют для вывода результатов работы программы на экран или в файл протокола.
|
||||
```py
|
||||
>>> strk1='Момент времени {}, значение = {}'
|
||||
>>> strk1
|
||||
'Момент времени {}, значение = {}'
|
||||
>>> strk1.format(1,89.7)
|
||||
'Момент времени 1, значение = 89.7'
|
||||
>>> strk2='Момент времени {1}, значение = {0}:{2}'
|
||||
```
|
||||
Здесь цифры в фигурных скобках – это индексы, определяющие порядок использования аргумен-тов формата. Поэтому такой способ называют основанным на позиционных аргументах. Например,
|
||||
```py
|
||||
>>> strk2.format(36.7,2,'норма!')
|
||||
'Момент времени 2, значение = 36.7:норма!'
|
||||
>>> strk3='Момент времени {num}, значение = {znch}'
|
||||
```
|
||||
Здесь в скобках указаны имена аргументов – вставок. Поэтому такой способ основан на имено-ванных аргументах.
|
||||
```py
|
||||
>>> strk3.format(znch=89.7,num=2)
|
||||
'Момент времени 2, значение = 89.7'
|
||||
```
|
||||
## 9.2. Методы для работы со списками.
|
||||
```py
|
||||
>>> spsk = [1, (2, 3), 'hello Sergey Alexandrovich', 3.14 , 'pi']
|
||||
>>> spsk.pop(2) #Удаление элемента по индексу
|
||||
'hello Sergey Alexandrovich'
|
||||
>>> spsk.append('c') #Вставка элемента в конец
|
||||
>>> spsk
|
||||
[1, (2, 3), 3.14, 'pi', 'c']
|
||||
>>> spsk.insert(2,'a') #Вставка элемента в конкретное место по индексу
|
||||
>>> spsk
|
||||
[1, (2, 3), 'a', 3.14, 'pi', 'c']
|
||||
>>> spsk.count('a') #Подсчет количества элементов по значению
|
||||
1
|
||||
## 9.3. Mетоды кортежей
|
||||
У кортежей методов меньше, тк он являетя неизменяемым и методов на добавление/удаление объекта - нет
|
||||
```py
|
||||
>>> km2=(5,'пять', 5.55, 'мопсикии',4+1j)
|
||||
>>> km2.count(5)
|
||||
1
|
||||
>>> km2.index('мопсикии')
|
||||
3
|
||||
```
|
||||
## 9.4 Методы словарей
|
||||
```py
|
||||
>>> d={'key1':1, 'key2':2,'key3':3,'key4':4}
|
||||
Cоздание копии
|
||||
```py
|
||||
>>> d1=d.copy()
|
||||
>>> d1
|
||||
{'key1': 1, 'key2': 2, 'key3': 3, 'key4': 4}
|
||||
```
|
||||
Возвращение значения по ключу
|
||||
```py
|
||||
>>> d.get('key3')
|
||||
3
|
||||
```
|
||||
Возвращение кортежей из пар ключ-значение
|
||||
```py
|
||||
>>> d.items()
|
||||
dict_items([('key1', 1), ('key2', 2), ('key3', 3), ('key4', 4)])
|
||||
```
|
||||
Возвращение объекта только из ключей
|
||||
```py
|
||||
>>> d.keys()
|
||||
dict_keys(['key1', 'key2', 'key3', 'key4'])
|
||||
```
|
||||
Возвращение объекта только из значений
|
||||
```py
|
||||
>>> d.values()
|
||||
dict_values([1, 2, 3, 4])
|
||||
```
|
||||
Добавление ключ-значения
|
||||
```py
|
||||
>>> d['key5']=5
|
||||
>>> d
|
||||
{'key1': 1, 'key2': 2, 'key3': 3, 'key4': 4, 'key5': 5}
|
||||
```
|
||||
Удаление ключ-значения
|
||||
```py
|
||||
>>> d.pop('key1')
|
||||
1
|
||||
>>> d
|
||||
{'key2': 2, 'key3': 3, 'key4': 4, 'key5': 5}
|
||||
```
|
||||
Очищение словаря
|
||||
```py
|
||||
>>> d.clear()
|
||||
>>> d
|
||||
{}
|
||||
```
|
||||
|
||||
## Методы множеств
|
||||
|
||||
```py
|
||||
>>> mn={1,'dva',3.33}
|
||||
```
|
||||
Добавление элемента
|
||||
```py
|
||||
>>> mn.add(4)
|
||||
>>> mn
|
||||
{1, 3.33, 4, 'dva'}
|
||||
```
|
||||
Создание копии
|
||||
```py
|
||||
>>> cop=mn.copy()
|
||||
>>> cop
|
||||
{1, 3.33, 4, 'dva'}
|
||||
```
|
||||
Удаление элемента по значению
|
||||
```py
|
||||
>>> mn.remove(1)
|
||||
>>> mn
|
||||
{3.33, 4, 'dva'}
|
||||
```
|
||||
Удаление элемента по значению
|
||||
```py
|
||||
>>> mn.discard('dva')
|
||||
>>> mn
|
||||
{3.33, 4}
|
||||
```
|
||||
Очищение множества
|
||||
```py
|
||||
>>> mn.clear()
|
||||
>>> mn
|
||||
set()
|
||||
```
|
||||
Удаление и возвращение случайного элемента из множества
|
||||
```py
|
||||
>>> cop.pop()
|
||||
1
|
||||
>>> cop
|
||||
{3.33, 4, 'dva'}
|
||||
```
|
||||
Добавление элементов
|
||||
```py
|
||||
>>> cop.update({False,'t'})
|
||||
>>> cop
|
||||
{False, 3.33, 4, 't', 'dva'}
|
||||
```
|
||||
|
||||
## Общее контрольное задание
|
||||
Преобразовать восьмеричное значение 45 в целое число.
|
||||
```py
|
||||
|
||||
>>> octv = '45'
|
||||
>>> decv = int(octv, 8)
|
||||
>>> decv
|
||||
37
|
||||
```
|
||||
Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12,
|
||||
"постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и
|
||||
значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж
|
||||
от списка?
|
||||
```py
|
||||
>>> D = {"усиление": 23, "запаздывание": 12, "постоянная времени": 78}
|
||||
>>> keyD = list(D.keys())
|
||||
>>> keyD
|
||||
['усиление', 'запаздывание', 'постоянная времени']
|
||||
>>> valD = list(D.values())
|
||||
>>> valD
|
||||
[23, 12, 78]
|
||||
>>> tupD = (keyD, valD)
|
||||
>>> tupD
|
||||
(['усиление', 'запаздывание', 'постоянная времени'], [23, 12, 78])
|
||||
|
||||
```
|
||||
Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с
|
||||
округлением вниз, с определением после этого остатка от деления получившегося значения
|
||||
на 3 и затем возведения результата в степень 2.4.
|
||||
```py
|
||||
>>> ((1768 // 24.8) % 3) ** 2.4
|
||||
5.278031643091577
|
||||
```
|
||||
Напишите и выполните единое выражение, последовательно осуществляющее следующие
|
||||
операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее
|
||||
ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
|
||||
```py
|
||||
>>> ((~(13 & 27)) ^ 14) << 2
|
||||
-32
|
||||
```
|
||||
Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки
|
||||
наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов
|
||||
этого списка.
|
||||
```py
|
||||
>>> lst = ["колебат"] * 4
|
||||
>>> lst[1] += lst[2]
|
||||
>>> lst
|
||||
['колебат', 'колебатколебат', 'колебат', 'колебат']
|
||||
>>> lst.pop(2)
|
||||
'колебат'
|
||||
>>> lst
|
||||
['колебат', 'колебатколебат', 'колебат']
|
||||
>>> 'аткол' in lst[1]
|
||||
True
|
||||
```
|
||||
Определить список методов, доступных у ранее созданного словаря D. Поочередно
|
||||
использовать его методы keys и values, определить, что можно получить с применением
|
||||
этих методов.
|
||||
```py
|
||||
>>> D
|
||||
{'усиление': 23, 'запаздывание': 12, 'постоянная времени': 78}
|
||||
>>> dir(D)
|
||||
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__',
|
||||
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
|
||||
'__getitem__', '__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']
|
||||
>>> D.keys()
|
||||
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
|
||||
>>> D.values()
|
||||
dict_values([23, 12, 78])
|
||||
```
|
||||
#dict_keys и dict_values особые объекты, которые ссылаются на элементы исходного словаря.
|
||||
|
||||
Создать объект - символьную строку с текстом данного предложения. Из символьной строки
|
||||
создать список, элементами которого будут отдельные слова из созданной строки. Заменить в
|
||||
списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить
|
||||
получившийся список.
|
||||
```py
|
||||
>>> sen = "Создать объект - символьную строку с текстом данного предложения"
|
||||
>>> senl = sen.split()
|
||||
>>> senl
|
||||
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||
>>> senl[senl.index("-")] = ","
|
||||
>>> senl
|
||||
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||
>>> senl.remove("данного")
|
||||
>>> senl
|
||||
['Создать', 'объект', ';', 'символьную', 'строку', 'с', 'текстом', 'предложения']
|
||||
```
|
||||
26
TEMA4/26.1.md
Обычный файл
26
TEMA4/26.1.md
Обычный файл
@@ -0,0 +1,26 @@
|
||||
26) Напишите инструкцию определения и запоминания в переменной текущего московского ка-лендарного времени. Создайте список с 40 элементами – числами от 3 с шагом 6. Создайте кортеж с 12 элементами - случайным подмножеством из элементов списка. Создайте новый кортеж с элементами из первого кортежа, упорядоченными по убыванию величина. Рассчитайте сумму элементов второго кортежа, начиная с 4-го от начала и до 8-го. Отобразите ре-зультат на экране в виде «Сумма элементов кортежа = ХХХ». Определите, сколько времени в секундах прошло с начала выполнения задания
|
||||
```py
|
||||
>>> import time #начальное время
|
||||
>>> import random #начальное время для Москвы
|
||||
>>> start_time = time.time()
|
||||
>>> start_time
|
||||
1760354973.1996331
|
||||
>>> here = time.localtime()
|
||||
>>> here
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=14, tm_min=29, tm_sec=44, tm_wday=0, tm_yday=286, tm_isdst=0)
|
||||
>>> numbers_list = list(range(3, 3 + 40*6, 6)) #список с 40 элементами – числами от 3 с шагом 6
|
||||
>>> numbers_list
|
||||
[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99, 105, 111, 117, 123, 129, 135, 141, 147, 153, 159, 165, 171, 177, 183, 189, 195, 201, 207, 213, 219, 225, 231, 237]
|
||||
>>> random_tuple = tuple(random.sample(numbers_list, 12)) #кортеж с 12 элементами - случайным подмножеством из элементов списка
|
||||
>>> random_tuple
|
||||
(189, 159, 153, 171, 219, 183, 201, 93, 237, 111, 165, 225)
|
||||
>>> r_tuple=tuple(sorted(random_tuple, reverse=True)) #сортировка в обратном порядке в кортеж
|
||||
>>> r_tuple
|
||||
(237, 225, 219, 201, 189, 183, 171, 165, 159, 153, 111, 93)
|
||||
>>> sum_elements = sum(r_tuple[3:8]) #суммa элементов второго кортежа
|
||||
>>> sum_elements
|
||||
909
|
||||
>>> end_time = time.time()
|
||||
>>> end_time
|
||||
1760355380.4714587
|
||||
```
|
||||
30
TEMA4/26.md
Обычный файл
30
TEMA4/26.md
Обычный файл
@@ -0,0 +1,30 @@
|
||||
26. Напишите инструкцию определения и запоминания в переменной текущего московского ка-лендарного времени. Создайте список с 40 элементами – числами от 3 с шагом 6. Создайте кортеж с 12 элементами - случайным подмножеством из элементов списка. Создайте новый кортеж с элементами из первого кортежа, упорядоченными по убыванию величина. Рассчитайте сумму элементов второго кортежа, начиная с 4-го от начала и до 8-го. Отобразите ре-зультат на экране в виде «Сумма элементов кортежа = ХХХ». Определите, сколько времени в секундах прошло с начала выполнения задания.
|
||||
импорт библиотек
|
||||
```py
|
||||
>>> import time
|
||||
>>> import random
|
||||
```
|
||||
```py
|
||||
>>> start_time = time.time() #начальное время
|
||||
>>> here = time.localtime() #начальное время для Москвы
|
||||
>>> here
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=14, tm_min=12, tm_sec=58, tm_wday=0, tm_yday=286, tm_isdst=0)
|
||||
>>> start_time
|
||||
1760353951.7821183
|
||||
>>> numbers_list = list(range(3, 3 + 40*6, 6)) #список с 40 элементами – числами от 3 с шагом 6
|
||||
>>> numbers_list
|
||||
[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99, 105, 111, 117, 123, 129, 135, 141, 147, 153, 159, 165, 171, 177, 183, 189, 195, 201, 207, 213, 219, 225, 231, 237]
|
||||
>>> reverse_tuple = tuple(sorted(numbers_list, reverse=True)) #сортировка в обратном порядке в кортеж
|
||||
>>> reverse_tuple
|
||||
(237, 231, 225, 219, 213, 207, 201, 195, 189, 183, 177, 171, 165, 159, 153, 147, 141, 135, 129, 123, 117, 111, 105, 99, 93, 87, 81, 75, 69, 63, 57, 51, 45, 39, 33, 27, 21, 15, 9, 3)
|
||||
>>> sum_elements = sum(sorted_kortezh[3:8])
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
NameError: name 'sorted_kortezh' is not defined
|
||||
|
||||
>>> sum_elements = sum(reverse_tuple[3:8]) #рассчитайте сумму элементов второго кортежа
|
||||
>>> sum_elements
|
||||
1035
|
||||
>>> end_time = time.time() #финальное время
|
||||
>>> end_time
|
||||
1760354435.6719537
|
||||
748
TEMA4/lab4.md
Обычный файл
748
TEMA4/lab4.md
Обычный файл
@@ -0,0 +1,748 @@
|
||||
### Отчет тема 4
|
||||
## Пункт 2 Стандартные функции (модуль builtins, импортированный по умолчанию)
|
||||
## Пункт 2.1
|
||||
round() - округление с заданной точностью
|
||||
```py
|
||||
>>> help(round)
|
||||
Help on built-in function round in module builtins:
|
||||
|
||||
round(number, ndigits=None)
|
||||
Round a number to a given precision in decimal digits.
|
||||
|
||||
The return value is an integer if ndigits is omitted or None. Otherwise
|
||||
the return value has the same type as the number. ndigits may be negative.
|
||||
```
|
||||
```py
|
||||
>>> round(123.456,1)
|
||||
123.5
|
||||
>>> type(round(123.456,1))
|
||||
<class 'float'>
|
||||
```
|
||||
```py
|
||||
>>> round(123.456,0)
|
||||
123.0
|
||||
>>> type(round(123.456,0))
|
||||
<class 'float'>
|
||||
```
|
||||
```py
|
||||
>>> round(123.456)
|
||||
123
|
||||
>>> type(round(123.456))
|
||||
<class 'int'>
|
||||
```
|
||||
Если ndigits не указан, функция возвращает округленное целое число.
|
||||
Если указано, то число с плавающей точкой
|
||||
|
||||
## Пункт 2.2
|
||||
Функция range создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1.
|
||||
```py
|
||||
>>> gg=range(76,123,9)
|
||||
>>> gg
|
||||
range(76, 123, 9)
|
||||
>>> type(gg)
|
||||
<class 'range'>
|
||||
>>> list(gg)
|
||||
[76, 85, 94, 103, 112, 121]
|
||||
```
|
||||
Можно и не задавать шаг
|
||||
```py
|
||||
>>> range(23)
|
||||
range(0, 23)
|
||||
>>> list(range(23))
|
||||
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
|
||||
```
|
||||
## Пункт 2.3 zip – создание общего объекта, элементами которого являются кортежи, составленные из эле-ментов двух или более объектов-последовательностей
|
||||
```py
|
||||
>>> qq = ['Цветкова', 'Снегура','Зеленкина']
|
||||
>>> ff=zip(gg,qq)
|
||||
>>> ff
|
||||
<zip object at 0x000001903C06A5C0>
|
||||
>>> tuple(ff)
|
||||
((76, 'Цветкова'), (85, 'Снегура'), (94, 'Зеленкина'))
|
||||
>>> ff[0]
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: 'zip' object is not subscriptable
|
||||
```
|
||||
```py
|
||||
>>> ff[1]
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#34>", line 1, in <module>
|
||||
ff[1]
|
||||
TypeError: 'zip' object is not subscriptable
|
||||
```
|
||||
Объект класса zip неизменяемый.
|
||||
|
||||
## Пункт 2.4. Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки.
|
||||
```py
|
||||
>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
|
||||
коэффициент усиления=5
|
||||
>>> dan
|
||||
-131.0
|
||||
>>> fff
|
||||
5.0
|
||||
```
|
||||
eval() — Это встроенная функция в Python, которая выполняет строку кода как программу.
|
||||
Как работает:
|
||||
1)Компилирует строку в байт-код
|
||||
2)Выполняет этот байт-код в заданном контексте
|
||||
## Пункт 2.5. Похожая на eval функция exec – чтение и выполнение объекта-аргумента функции. Этот объ-ект должен представлять собой строку символов с совокупностью инструкций на языке Python.
|
||||
```py
|
||||
>>> exec(input('введите инструкции:'))
|
||||
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
|
||||
>>> gg
|
||||
221.456
|
||||
Пояснение:
|
||||
eval превращает текст в работающий код
|
||||
exec может выполнять любой код, но не возвращает значение.
|
||||
## Пункт 2.6. Самостоятельно изучите и попробуйте применить функции abs, pow, max, min, sum, divmod, len, map.
|
||||
```py
|
||||
Возведение модуля (abs)
|
||||
```py
|
||||
>>> abs(-5)
|
||||
5
|
||||
>>> abs(5+5j)
|
||||
7.0710678118654755
|
||||
>>> abs(4**(-10))
|
||||
9.5367431640625e-07
|
||||
>>> abs(-4**10)
|
||||
1048576
|
||||
>>> abs(-4**(-10))
|
||||
9.5367431640625e-07
|
||||
```
|
||||
Возведение степени
|
||||
```py
|
||||
>>> pow(5,2)
|
||||
25
|
||||
>>> pow(-5,-2)
|
||||
0.04
|
||||
>>> pow(5,4,2)
|
||||
1
|
||||
>>> pow(5+5j,2)
|
||||
50j
|
||||
```
|
||||
Максимальное значение
|
||||
|
||||
```py
|
||||
>>> max(2,5.8,7)
|
||||
7
|
||||
>>> max([4,0,-7])
|
||||
4
|
||||
>>> max({'a': 1, 'b': 2, 'c': 3}) #выбор большего происходит из ключей
|
||||
'c'
|
||||
>>> max(["ee", "eee", "eeeeeee"], key = len)
|
||||
'eeeeeee'
|
||||
>>> max("b", "B") #сравнивает коды символов в unicode
|
||||
'b'
|
||||
>>> max([34,5,6, "e", 5+2j])
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: '>' not supported between instances of 'str' and 'int'
|
||||
```
|
||||
Видно что с разными типами данных не работает
|
||||
|
||||
Минимальное значение
|
||||
```py
|
||||
>>> min(2,5.8,7)
|
||||
2
|
||||
>>> min(({'a': 1, 'b': 2, 'c': 3})) #по ключу
|
||||
'a'
|
||||
>>> min(-7,-6,abs(-8))
|
||||
-7
|
||||
```
|
||||
Сумма элементов
|
||||
```py
|
||||
>>> sum([1,2,3,4])
|
||||
10
|
||||
>>> sum([1,2,3,4], -2)
|
||||
8
|
||||
```
|
||||
```py
|
||||
>>> sum("bbbb", "аааа")
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: sum() can't sum strings [use ''.join(seq) instead]
|
||||
>>> sum(5+5j,3)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: 'complex' object is not iterable
|
||||
>>> sum(5+5j,5+5j)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: 'complex' object is not iterable
|
||||
>>> sum(4.5,5)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: 'float' object is not iterable
|
||||
>>> sum(4.5,4.5)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: 'float' object is not iterable
|
||||
```
|
||||
Возвращение кортежа из целой части и остатка от деления
|
||||
```py
|
||||
>>> help(divmod)
|
||||
Help on built-in function divmod in module builtins:
|
||||
divmod(x, y, /)
|
||||
Return the tuple (x//y, x%y). Invariant: div*y + mod == x.
|
||||
>>> divmod(20,3)
|
||||
(6, 2) #20 // 3 = 6 (целая часть) 20 % 3 = 2 (остаток)
|
||||
>>> divmod(20,-3)
|
||||
(-7, -1) 20 ÷ (-3) = -6.666... округляем вниз -7 20 % -3 = 1
|
||||
```
|
||||
|
||||
Длина объекта
|
||||
```py
|
||||
>>> len((1,2,2))
|
||||
3
|
||||
>>> len("aaaaaaaaaa")
|
||||
10
|
||||
>>> len(["aaaa","ddddddddddd"])
|
||||
2
|
||||
>>> len({'a': 1, 'b': 2, 'c': 3})
|
||||
3
|
||||
>>> len(12)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: object of type 'int' has no len()
|
||||
```
|
||||
Применение функции к каждому элементу коллекции
|
||||
```py
|
||||
>>> help(map)
|
||||
Help on class map in module builtins:
|
||||
class map(object)
|
||||
| map(func, *iterables) --> map object
|
||||
|
|
||||
| Make an iterator that computes the function using arguments from
|
||||
| each of the iterables. Stops when the shortest iterable is exhausted.
|
||||
|
||||
>>> map(int, ["1", "2"])
|
||||
<map object at 0x000001903C2BB5E0>
|
||||
>>> list(map(int, ["1", "2"]))
|
||||
[1, 2]
|
||||
```
|
||||
Останавливается когда самая короткая коллекция заканчивается
|
||||
"Лишние" элементы из более длинных коллекций игнорируются
|
||||
|
||||
## Пункт 3 Стандартный модуль math
|
||||
```py
|
||||
>>> import math
|
||||
>>> dir(math)
|
||||
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin',
|
||||
'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees',
|
||||
'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp',
|
||||
'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
|
||||
|
||||
>>> help(math.factorial)
|
||||
Help on built-in function factorial in module math:
|
||||
|
||||
factorial(x, /)
|
||||
Find x!.
|
||||
|
||||
Raise a ValueError if x is negative or non-integral.
|
||||
|
||||
>>> math.factorial(5)
|
||||
120
|
||||
```
|
||||
Нахождение синуса
|
||||
```py
|
||||
>>> help(math.sin)
|
||||
Help on built-in function sin in module math:
|
||||
|
||||
sin(x, /)
|
||||
Return the sine of x (measured in radians).
|
||||
>>> math.sin(math.pi/2)
|
||||
1.0
|
||||
>>> math.sin(0.96)
|
||||
0.8191915683009983
|
||||
```
|
||||
Нахождение арккосинуса
|
||||
```py
|
||||
>>> math.acos(1)
|
||||
0.0
|
||||
>>> math.acos(-1)
|
||||
3.141592653589793
|
||||
>>> math.acos(-0.54)
|
||||
2.1412334361948187
|
||||
>>> math.acos(5) #больше 1 нельзя
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
ValueError: math domain error
|
||||
```
|
||||
Перевод из радиан в градусы
|
||||
```py
|
||||
>>> help(math.degrees)
|
||||
Help on built-in function degrees in module math:
|
||||
|
||||
degrees(x, /)
|
||||
Convert angle x from radians to degrees.
|
||||
|
||||
>>> math.radians(math.pi)
|
||||
0.05483113556160755
|
||||
|
||||
>>> math.radians(360)
|
||||
6.283185307179586
|
||||
|
||||
>>> math.radians(90)
|
||||
1.5707963267948966
|
||||
```
|
||||
|
||||
Число е в степени заданного
|
||||
```py
|
||||
>>> help(math.exp)
|
||||
Help on built-in function exp in module math:
|
||||
exp(x, /)
|
||||
Return e raised to the power of x.
|
||||
>>> math.exp(0)
|
||||
1.0
|
||||
>>> math.exp(1)
|
||||
2.718281828459045
|
||||
>>> math.exp(-5)
|
||||
0.006737946999085467
|
||||
>>> math.exp(1/2)
|
||||
1.6487212707001282
|
||||
```
|
||||
Нахождение логарифма
|
||||
```py
|
||||
>>> help(math.log)
|
||||
Help on built-in function log in module math:
|
||||
|
||||
log(...)
|
||||
log(x, [base=math.e])
|
||||
Return the logarithm of x to the given base.
|
||||
|
||||
If the base not specified, returns the natural logarithm (base e) of x.
|
||||
>>> math.log(math.e)
|
||||
1.0
|
||||
>>> math.log(5)
|
||||
1.6094379124341003
|
||||
>>> math.log(25,5)
|
||||
2.0
|
||||
>>> math.log(-25,5) #с отрицательными числами не работает
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
ValueError: math domain error
|
||||
>>> math.log(25,-5)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
ValueError: math domain error
|
||||
```
|
||||
Десятичный логарифм
|
||||
```py
|
||||
>>> math.log10(10)
|
||||
1.0
|
||||
>>> math.log10(0.01)
|
||||
-2.0
|
||||
```
|
||||
Извлечение квадратного корня
|
||||
```py
|
||||
>>> math.sqrt(25)
|
||||
5.0
|
||||
>>> math.sqrt(26)
|
||||
5.0990195135927845
|
||||
>>> math.sqrt(26.7)
|
||||
5.167204273105526
|
||||
>>> math.sqrt(-25)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
ValueError: math domain error
|
||||
>>> math.sqrt(26.7+7j)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: must be real number, not complex
|
||||
```
|
||||
Округление числа до ближайшего целого вверх
|
||||
```py
|
||||
>>> 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(1.2)
|
||||
2
|
||||
>>> math.ceil(9.99)
|
||||
10
|
||||
>>> math.ceil(-6.2)
|
||||
-6
|
||||
>>> math.ceil(-6.9)
|
||||
-6
|
||||
```
|
||||
Округление вниз
|
||||
```py
|
||||
>>> math.floor(1.2)
|
||||
1
|
||||
>>> math.floor(9.99)
|
||||
9
|
||||
>>> math.floor(-6.2)
|
||||
-7
|
||||
>>> math.floor(-6.9)
|
||||
-7
|
||||
>>> math.floor(-6.9+5j)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
TypeError: must be real number, not complex
|
||||
```
|
||||
Константа: число пи
|
||||
```py
|
||||
>>> math.pi
|
||||
3.141592653589793
|
||||
```
|
||||
комбинированное использование
|
||||
```py
|
||||
>>> math.sin(2 * math.pi / 7 + math.exp(0.23))
|
||||
0.8334902641414562
|
||||
```
|
||||
## Пункт 4 Модуль 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 Модуль random для генерации псевдослучайных чисел и работы с ними
|
||||
```py
|
||||
>>> import random
|
||||
>>> dir(random)
|
||||
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_index', '_inst', '_isfinite', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
|
||||
>>> help(random.seed)
|
||||
Help on method seed in module random:
|
||||
|
||||
seed(a=None, version=2) method of random.Random instance
|
||||
Initialize internal state from a seed.
|
||||
|
||||
The only supported seed types are None, int, float,
|
||||
str, bytes, and bytearray.
|
||||
|
||||
None or no argument seeds from current time or from an operating
|
||||
system specific randomness source if available.
|
||||
|
||||
If *a* is an int, all bits are used.
|
||||
|
||||
For version 2 (the default), all of the bits are used if *a* is a str,
|
||||
bytes, or bytearray. For version 1 (provided for reproducing random
|
||||
sequences from older versions of Python), the algorithm for str and
|
||||
bytes generates a narrower range of seeds.
|
||||
|
||||
>>> random.seed()
|
||||
```
|
||||
```py
|
||||
>>> help(random.random)
|
||||
Help on built-in function random:
|
||||
|
||||
random() method of random.Random instance
|
||||
random() -> x in the interval [0, 1).
|
||||
```
|
||||
Случайное число от 0 до 1
|
||||
```py
|
||||
>>> random.random()
|
||||
0.23002075073724337
|
||||
>>> random.random()
|
||||
0.535712008113208
|
||||
>>> random.random()
|
||||
0.4738049347613569
|
||||
>>> help(random.uniform)
|
||||
Help on method uniform in module random:
|
||||
|
||||
uniform(a, b) method of random.Random instance
|
||||
Get a random number in the range [a, b) or [a, b] depending on rounding.
|
||||
```
|
||||
Равномерно распределенное случайное число
|
||||
```py
|
||||
>>> random.uniform(20,30)
|
||||
22.41214721441803
|
||||
```
|
||||
Равномерное случайное целое
|
||||
```py
|
||||
>>> help(random.randint)
|
||||
Help on method randint in module random:
|
||||
|
||||
randint(a, b) method of random.Random instance
|
||||
Return random integer in range [a, b], including both end points.
|
||||
|
||||
>>> random.randint(20,30)
|
||||
21
|
||||
>>> random.randint(20,30)
|
||||
27
|
||||
```
|
||||
Случайное из коллекции
|
||||
```py
|
||||
>>> help(random.choice)
|
||||
Help on method choice in module random:
|
||||
|
||||
choice(seq) method of random.Random instance
|
||||
Choose a random element from a non-empty sequence.
|
||||
|
||||
>>> random.choice([ъъъ, "уууууууe", 80, 7, 5+5j])
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
NameError: name 'ъъъ' is not defined
|
||||
>>> random.choice(["ffff", "уууууууe", 80, 7, 5+5j])
|
||||
80
|
||||
>>> random.choice(["ffff", "уууууууe", 80, 7, 5+5j])
|
||||
(5+5j)
|
||||
```
|
||||
|
||||
Нормально распределенное случайное число
|
||||
```py
|
||||
>>> help(random.gauss)
|
||||
Help on method gauss in module random:
|
||||
|
||||
gauss(mu=0.0, sigma=1.0) method of random.Random instance
|
||||
Gaussian distribution.
|
||||
|
||||
mu is the mean, and sigma is the standard deviation. This is
|
||||
slightly faster than the normalvariate() function.
|
||||
|
||||
Not thread-safe without a lock around calls.
|
||||
|
||||
>>> random.gauss(0,1)
|
||||
-0.43812614222540897
|
||||
>>> random.gauss(7,8)
|
||||
11.287669776968896
|
||||
```
|
||||
Случайное подмножество
|
||||
```py
|
||||
>>> help(random.sample)
|
||||
Help on method sample in module random:
|
||||
|
||||
sample(population, k, *, counts=None) method of random.Random instance
|
||||
Chooses k unique random elements from a population sequence.
|
||||
|
||||
Returns a new list containing elements from the population while
|
||||
leaving the original population unchanged. The resulting list is
|
||||
in selection order so that all sub-slices will also be valid random
|
||||
samples. This allows raffle winners (the sample) to be partitioned
|
||||
into grand prize and second place winners (the subslices).
|
||||
|
||||
Members of the population need not be hashable or unique. If the
|
||||
population contains repeats, then each occurrence is a possible
|
||||
selection in the sample.
|
||||
|
||||
Repeated elements can be specified one at a time or with the optional
|
||||
counts parameter. For example:
|
||||
|
||||
sample(['red', 'blue'], counts=[4, 2], k=5)
|
||||
|
||||
is equivalent to:
|
||||
|
||||
sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5)
|
||||
|
||||
To choose a sample from a range of integers, use range() for the
|
||||
population argument. This is especially fast and space efficient
|
||||
for sampling from a large population:
|
||||
|
||||
sample(range(10000000), 60)
|
||||
|
||||
>>> lst=('a','b','c')
|
||||
>>> random.sample(lst, 2)
|
||||
['a', 'c']
|
||||
>>> random.sample(lst, 0)
|
||||
[]
|
||||
>>> random.sample(list, 7)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\Lib\random.py", line 439, in sample
|
||||
raise TypeError("Population must be a sequence. "
|
||||
TypeError: Population must be a sequence. For dicts or sets, use sorted(d).
|
||||
```
|
||||
Случайное число, подчиняющееся бета-распределению
|
||||
```py
|
||||
>>> help(random.betavariate)
|
||||
Help on method betavariate in module random:
|
||||
|
||||
betavariate(alpha, beta) method of random.Random instance
|
||||
Beta distribution.
|
||||
|
||||
Conditions on the parameters are alpha > 0 and beta > 0.
|
||||
Returned values range between 0 and 1.
|
||||
|
||||
>>> random.betavariate(3,4)
|
||||
0.4104754948305531
|
||||
>>> random.betavariate(3,4)
|
||||
0.4104754948305531
|
||||
```
|
||||
Случайное число, подчиняющееся гамма-распределению
|
||||
```py
|
||||
>>> help(random.gammavariate)
|
||||
Help on method gammavariate in module random:
|
||||
|
||||
gammavariate(alpha, beta) method of random.Random instance
|
||||
Gamma distribution. Not the gamma function!
|
||||
|
||||
Conditions on the parameters are alpha > 0 and beta > 0.
|
||||
|
||||
The probability distribution function is:
|
||||
|
||||
x ** (alpha - 1) * math.exp(-x / beta)
|
||||
pdf(x) = --------------------------------------
|
||||
math.gamma(alpha) * beta ** alpha
|
||||
|
||||
>>> random.gammavariate(3,4)
|
||||
18.75253913135498
|
||||
```
|
||||
Список из четырех чисел с разными законами распределения:
|
||||
```py
|
||||
>>> rd=[random.uniform(3,4),random.gauss(3,4),random.betavariate(3,4),random.gammavariate(3,4)]
|
||||
>>> rd
|
||||
[3.9065412706472173, 5.093585831129117, 0.423027969366889, 7.115102862880251]
|
||||
```
|
||||
## Пункт 6 time - модуль для работы со временем
|
||||
```py
|
||||
>>> import time
|
||||
>>> dir(time)
|
||||
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']
|
||||
```
|
||||
UNIX-время
|
||||
```py
|
||||
>>> c1=time.time()
|
||||
>>> c1
|
||||
1760272978.995956
|
||||
>>> c2=time.time()-c1
|
||||
>>> c2
|
||||
12.162038326263428
|
||||
```
|
||||
Текущее время
|
||||
```py
|
||||
>>> time.gmtime
|
||||
<built-in function gmtime>
|
||||
>>> help(time.gmtime)
|
||||
Help on built-in function gmtime in module time:
|
||||
|
||||
gmtime(...)
|
||||
gmtime([seconds]) -> (tm_year, tm_mon, tm_mday, tm_hour, tm_min,
|
||||
tm_sec, tm_wday, tm_yday, tm_isdst)
|
||||
|
||||
Convert seconds since the Epoch to a time tuple expressing UTC (a.k.a.
|
||||
GMT). When 'seconds' is not passed in, convert the current time instead.
|
||||
|
||||
If the platform supports the tm_gmtoff and tm_zone, they are available as
|
||||
attributes only.
|
||||
|
||||
>>> dat=time.gmtime()
|
||||
>>> list(dat)
|
||||
[2025, 10, 12, 12, 44, 15, 6, 285, 0]
|
||||
>>> dat.tm_year
|
||||
2025
|
||||
>>> dat.tm_yday
|
||||
285
|
||||
>>> dat.tm_isdst #Показывает, действует ли летнее время (0 - нет, 1 - да, -1 - нет данных)
|
||||
0
|
||||
```
|
||||
Текущее время с учетом часового пояса
|
||||
```py
|
||||
>>> here = time.localtime()
|
||||
>>> here
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=15, tm_min=44, tm_sec=59, tm_wday=6, tm_yday=285, tm_isdst=0)
|
||||
```
|
||||
Время из кортежа в строку
|
||||
```py
|
||||
>>> time.asctime(here)
|
||||
'Sun Oct 12 15:44:59 2025'
|
||||
```
|
||||
Время из секунд в строку
|
||||
```py
|
||||
>>> time.ctime()
|
||||
'Sun Oct 12 15:46:30 2025'
|
||||
```
|
||||
Пауза
|
||||
```py
|
||||
>>> time.sleep(5)
|
||||
```
|
||||
Из кортежа в секунды с начала эпохи
|
||||
```py
|
||||
>>> time.mktime(here)
|
||||
1760273099.0
|
||||
```
|
||||
## Пункт 7 Графические функции модуля pylab пакета matplotlib
|
||||
```py
|
||||
>>> import matplotlib
|
||||
>>> import pylab
|
||||
|
||||
>>> x=list(range(-3,55,4))
|
||||
>>> t=list(range(15))
|
||||
|
||||
>>> pylab.plot(t,x) #Создание графика в оперативной памяти
|
||||
[<matplotlib.lines.Line2D object at 0x00000158D9921670>]
|
||||
|
||||
>>> pylab.title('Первый график')
|
||||
Text(0.5, 1.0, 'Первый график')
|
||||
|
||||
>>> pylab.xlabel('время')
|
||||
Text(0.5, 0, 'время')
|
||||
>>> pylab.ylabel('сигнал')
|
||||
Text(0, 0.5, 'сигнал')
|
||||
|
||||
>>> pylab.show()
|
||||
```
|
||||
Два графика на одном окне
|
||||
```py
|
||||
>>> X1=[12,6,8,10,7]
|
||||
>>> X2=[5,7,9,11,13]
|
||||
>>> pylab.plot(X1) #Создание графика в оперативной памяти
|
||||
[<matplotlib.lines.Line2D object at 0x000001905007A090>]
|
||||
>>> pylab.plot(X2)
|
||||
[<matplotlib.lines.Line2D object at 0x0000019050064D90>]
|
||||
>>> pylab.show()
|
||||
```
|
||||
|
||||
Круговая диаграмма:
|
||||
```py
|
||||
>>> region=['Центр','Урал','Сибирь','Юг']
|
||||
>>> naselen=[65,12,23,17]
|
||||
>>> pylab.pie(naselen,labels=region)
|
||||
([<matplotlib.patches.Wedge object at 0x00000158DBCC8820>, <matplotlib.patches.Wedge object at 0x00000158DBCC8760>, <matplotlib.patches.Wedge object at 0x00000158DBCC8FD0>, <matplotlib.patches.Wedge object at 0x00000158DBCDE490>], [Text(-0.1910130855889933, 1.083288512416601, 'Центр'), Text(-0.8613283319035216, -0.6841882085072037, 'Урал'), Text(0.04429273729355889, -1.0991078898011077, 'Сибирь'), Text(0.9873752043868569, -0.4848610169543564, 'Юг')])
|
||||
>>> pylab.show()
|
||||
```
|
||||
Гистограмма:
|
||||
```py
|
||||
>>> region=['Центр','Урал','Сибирь','Юг'] #Метки для диаграммы
|
||||
>>> naselen=[65,12,23,17] # Значения для диаграммы
|
||||
>>> pylab.pie(naselen,labels=region) #Создание диаграммы в памяти
|
||||
([<matplotlib.patches.Wedge object at 0x000001904BFBD350>, <matplotlib.patches.Wedge object at 0x000001904F822550>, <matplotlib.patches.Wedge object at 0x000001904F83E5D0>, <matplotlib.patches.Wedge object at 0x000001904F83FC50>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
|
||||
>>> pylab.show() #Отображение диаграммы
|
||||
```
|
||||
Столбиковая диаграмма:
|
||||
```py
|
||||
>>> a=['cat','dog','frog']
|
||||
>>> v=[10,55,100]
|
||||
>>> pylab.bar(a,v,color='purple')
|
||||
<BarContainer object of 3 artists>
|
||||
>>> pylab.show()
|
||||
```
|
||||
## Пункт 8
|
||||
|
||||
Статистический модуль 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', '_mean_stdev', '_normal_dist_inv_cdf', '_sqrt_bit_width', '_ss', '_sum', 'bisect_left', 'bisect_right', 'correlation', 'covariance', 'defaultdict', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'linear_regression', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'mul', 'multimode', 'namedtuple', 'numbers', 'pstdev', 'pvariance', 'quantiles', 'random', 'reduce', 'repeat', 'sqrt', 'stdev', 'sys', 'tau', 'variance']
|
||||
```
|
||||
Математическое ожидание
|
||||
```py
|
||||
>>> data = [0,11,8,5]
|
||||
>>> statistics.mean(data)
|
||||
6
|
||||
```
|
||||
Медиана
|
||||
```py
|
||||
>>> statistics.median(data)
|
||||
6.5
|
||||
```
|
||||
Среднеквадратичное отклонение
|
||||
```py
|
||||
>>> statistics.stdev(data)
|
||||
4.69041575982343
|
||||
```
|
||||
Дисперсия
|
||||
```py
|
||||
>>> statistics.variance(data)
|
||||
22
|
||||
```
|
||||
Квантили
|
||||
```py
|
||||
>>> statistics.quantiles(data)
|
||||
[1.25, 6.5, 10.25]
|
||||
```
|
||||
59
TEMA4/o.md
Обычный файл
59
TEMA4/o.md
Обычный файл
@@ -0,0 +1,59 @@
|
||||
|
||||
|
||||
ОБЩЕЕ КОНТРОЛЬНОЕ ЗАДАНИЕ
|
||||
|
||||
• Напишите и исполните единое выражение, реализующее последовательное выполнение
|
||||
следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата
|
||||
до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из
|
||||
двух значений: округленное вниз значение от деления результата на 3 и остатка от этого
|
||||
деления
|
||||
|
||||
>>> divmod((round(cmath.phase(0.2 + 0.8j), 2) * 20), 3)
|
||||
(8.0, 2.6000000000000014)
|
||||
|
||||
• Создайте объект класса struct_time с временными параметрами для текущего
|
||||
московского времени. Создайте строку с текущим часом и минутами.
|
||||
|
||||
>>> nowtime = time.localtime()
|
||||
>>> nowtime
|
||||
time.struct_time(tm_year=2024, tm_mon=9,
|
||||
tm_mday=30, tm_hour=1, tm_min=44, tm_sec=10, tm_wday=0, tm_yday=274, tm_isdst=0)
|
||||
>>> nows = str(nowtime.tm_hour) + " " + str(nowtime.tm_min)
|
||||
>>> nows
|
||||
'1 44'
|
||||
|
||||
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку
|
||||
из этого списка с тремя днями недели.
|
||||
|
||||
>>> week = ["понедельник", "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье"]
|
||||
>>> random.sample(week, 3)
|
||||
['вторник', 'суббота', 'четверг']
|
||||
|
||||
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от
|
||||
14 до 32 с шагом 3.
|
||||
|
||||
>>> random.choice(range(14, 32, 3))
|
||||
26
|
||||
>>> random.choice(range(14, 32, 3))
|
||||
14
|
||||
|
||||
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и
|
||||
стандартным отклонением 4 и округлите его до целого значения. Создайте список с N
|
||||
элементами – случайно выбранными буквами латинского алфавита.
|
||||
|
||||
>>> N = round(random.gauss(15,4))
|
||||
>>> N
|
||||
13
|
||||
>>> lst = list("abcdefghijgklmnopqrstuvwxyz")
|
||||
>>> random.sample(lst, N)
|
||||
['i', 'g', 'g', 'j', 't', 's', 'r', 'v', 'f', 'y', 'b', 'z', 'l']
|
||||
|
||||
Или в одну строку:
|
||||
>>> random.sample(list("abcdefghijgklmnopqrstuvwxyz"), round(random.gauss(15,4)))
|
||||
['l', 'u', 'z', 'g', 't', 'd', 'f', 'e', 'm', 'k']
|
||||
|
||||
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с
|
||||
момента предыдущего (из п.2) определения временных параметров.
|
||||
|
||||
>>> (time.mktime(nowtime) - time.mktime(time.localtime())) / 60
|
||||
-27.216666666666665
|
||||
Ссылка в новой задаче
Block a user