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

24 KiB

Отчет по теме 3

Подольский Никита, А-01-23

1. Запуск IDLE

2. Преобразование простых типов объектов

2.1 Функция bool()

>>> logiz1=bool(56)
>>> logiz1
True
>>> logiz2=bool(0)
>>> logiz2
False
>>> logiz3=bool('Beta')
>>> logiz3
True
>>> logiz4=bool(" ")
>>> logiz4
True

2.2 Преобразование в целое десятичное число объекта с заданной системой счисления

>>> 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#16>", line 1, in <module>
    tt5=int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'

В последней инструкции tt5=int("98.76") возникает ошибка, потому что функция int() ожидает строку, представляющую целое число, а не вещественное (дробное) число.

Функция float()

>>> flt1=float(789)
>>> flt1
789.0
>>> flt2=float(-6.78e2)
>>> flt2
-678.0
>>> flt3=float("Infinity")
>>> flt3
inf
>>> flt4=float("inf")
>>> flt4
inf

2.3 Преобразование десятичных чисел в другие системы счисления

>>> hh=123
>>> dv1=bin(hh)   #Преобразование в строку с двоичным представлением
>>> dv1
'0b1111011'

>>> vos1=oct(hh)   # Преобразование в строку с восьмеричным представлением
>>> vos1
'0o173'

>>>shs1=hex(hh)   # Преобразование в строку с шестнадцатеричным представлением
>>> shs1
'0x7b'

>>> int(dv1,2)
123
>>> int(vos1,8)
123
>>> int(shs1, 16)
123

3. Изучение преобразования более сложных типов объектов

3.1 Преобразование в строку символов с помощью функции str()

>>> strk1=str(23.6)
>>> strk1
'23.6'
>>> strk2=str(logiz3)
>>> strk2
'True'
>>> strk3=str(["A","B","C"])  #Преобразуем список
>>> strk3
"['A', 'B', 'C']"
>>> strk4=str(("A","B","C"))  #Преобразуем кортеж
>>> strk4
"('A', 'B', 'C')"
>>> strk5=str({"A":1,"B":2,"C":9})  #Преобразуем словарь
>>> strk5
"{'A': 1, 'B': 2, 'C': 9}"

3.2 Преобразование элементов объекта в список с помощью функции list()

>>> 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']
Создание из того же словаря списка с другими частями
>>> spis31=list({"A":1,"B":2,"C":9}.values())
spis31
[1, 2, 9]

3.3 Преобразование элементов объектов в кортеж с помощью функции tuple()

>>> kort7=tuple('Строка символов')  #Преобразование строки символов в кортеж
>>> kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
>>> kort8=tuple(spis2)   #Преобразование списка в кортеж
>>> kort8
(124, 236, -15, 908)
>>> kort9=tuple({"A":1,"B":2,"C":9})   #Преобразование словаря в кортеж
>>> kort9
('A', 'B', 'C')

3.4 Удаление объектов

>>> del strk5, kort8
>>> strk5
Traceback (most recent call last):
  File "<pyshell#65>", line 1, in <module>
    strk5
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
>>> kort8
Traceback (most recent call last):
  File "<pyshell#66>", line 1, in <module>
    kort8
NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
Создание строки с фамилией и инициалами и ее преобразования
>>> fam = "Podolsky"
>>> im = "N"
>>> ot = "K"
>>> fio = fam + im+ ot
>>> fio
'PodolskyNK'
>>> listfio=list(fio)
>>> listfio
['P', 'o', 'd', 'o', 'l', 's', 'k', 'y', 'N', 'K']
>>> kort = tuple(listfio)
>>> kort
('P', 'o', 'd', 'o', 'l', 's', 'k', 'y', 'N', 'K')
>>> strkfio = str(kort)
>>> strkfio
"('P', 'o', 'd', 'o', 'l', 's', 'k', 'y', 'N', 'K')"

4. Арифметические операции

4.1 Сложение и вычитание

>>> 12+7+90   # Сложение целых чисел
109
>>> 5.689e-1 - 0.456  #Вычитание вещественных чисел
0.11289999999999994
>>> 23.6+54   #Сложение вещественного и целого чисел
77.6
>>> 14-56.7+89  # Сложение и вычитание целых и вещественных чисел
46.3

4.2 Умножение

>>> -6.7*12   #Умножение вещественного числа на целое число
-80.4

4.3 Деление

>>> -234.5/6   #Деление вещественного числа на целое
-39.083333333333336
>>> a=178/45  #Деление двух целых чисел – проверьте тип объекта a!
>>> a
3.9555555555555557
>>> type(a)
<class 'float'>

4.4 Деление с округлением вниз (//)

>>> b=178//45   #Деление двух целых чисел
>>> b
3
>>> type(b)
<class 'int'>

>>> c=-24.6//12.1  #Деление двух вещественных чисел
>>> c
-3.0
>>> type(c)
<class 'float'>

>>> z = 52 // 2.5
>>> z
20.0
>>> type (z)
<class 'float'>

>>> zz = 52.5 // 7
>>> zz
7.0
>>> type (zz)
<class 'float'>

4.5 Получение остатка от деления (%)

>>> 148%33   #Остаток от деления двух целых чисел
16
>>> 12.6%3.8  #Остаток от деления двух вещественных чисел
1.2000000000000002
>>> 148 % 3.8
3.6000000000000068
>>> 12.6 % 3
0.5999999999999996

4.6.  Возведение в степень **

>>> 14**3  #Целое число возводится в целую степень148 % 3.8
2744

>>> e=2.7**3.6  #Вещественное число возводится в вещественную степень
>>> e
35.719843790663525

>>> 5**2.5
55.90169943749474

>>> 2.5**5
97.65625
Другие арифметические операции над комплексными числами
Сложение
>>>> z1 = 2 + 3j
>>> z2 = 4 - 5j
>>> sum_result = z1 + z2
>>> sum_result
(6-2j)
Вычитание
>>> sub_result = z1 - z2
>>> sub_result
(-2+8j)
Умножение
>>> mul_result = z1 * z2
>>> mul_result
(23+2j)
Деление
>>> delen = z1 / z2
>>> delen
(-0.17073170731707318+0.5365853658536587j)
Возведение в степень
>>> e = 5**(2+1j)       # Получится комплексное число (complex)
>>> e
(-0.9657992483483834+24.98133767058701j)

>>> f = (3+4j)**2       # Получится комплексное число (complex)
>>> f
(-7+24j)

>>> g = (2+3j)**1.5     # Получится комплексное число (complex)
>>> g
(0.6603660276815663+6.814402636366296j)
Деление с округлением вниз
>>> z1 // z2
Traceback (most recent call last):
  File "<pyshell#135>", line 1, in <module>
    z1 // z2
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'

>>> z1 // 2
Traceback (most recent call last):
  File "<pyshell#136>", line 1, in <module>
    z1 // 2
TypeError: unsupported operand type(s) for //: 'complex' and 'int'

Видим, что деление с округлением вниз нельзя использовать с комплексными числами

Взятие остатка от деления
>>> z1 % z2
Traceback (most recent call last):
 File "<pyshell#137>", line 1, in <module>
   z1 % z2
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'

>>> z1 % 2
Traceback (most recent call last):
 File "<pyshell#138>", line 1, in <module>
   z1 % 2
TypeError: unsupported operand type(s) for %: 'complex' and 'int'

Взятие остатка от деления нельзя так же применять к комплексным числам

5. Операции с двоичными представлениями целых чисел

5.1 Двоичная инверсия (~)

>>> dv1=9
>>> dv2 = ~dv1
>>> dv2
-10
>>> bin(dv1)
'0b1001'
>>> bin(dv2)
'-0b1010'

5.2 Двоичное И (&)

>>> bin(7&9)
'ob1'
>>> bin (7&8)
'0b0'

5.3 Двоичное ИЛИ (|)

>>> bin(7|9)     # 111 или 1001 = 1111
'0b1111'
>>> bin(7|8)     # 111 или 1000 = 1111
'0b1111'
>>> bin(14|5)   # 1110 или 0101 = 1111
'0b1111'

5.4 Двоичное исключающее ИЛИ (^)

>>> bin(14^5)  # 1110 исключающее или 0101 = 1011
'0b1011'

>>>14^5        
11

5.5 Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева.

>>> h=14
>>> bin(h)          
'0b1110'

>>> g=h<<2  # Новое двоичное представление = 111000
>>> g
56
>>> bin(g)  
'0b111000'

>>> g1=h>>1  # Новое двоичное представление = 0111
>>> g1
7
>>> bin(g1)
'0b111'

>>> g2=h>>2  # Новое двоичное представление = 0011
>>> g2
3
>>> bin(g2)
'0b11'
a = 0b1011101    # это 93 в десятичной системе
b = 0b1100110    # это 102 в десятичной системе
Инверсия
>>> ainv = ~a
>>> binv = ~b
>>> ainv
-94
>>> binv
-103
>>> bin(a)
'0b1011101'
>>> bin (b)
'0b1100110'
Двоичное И
>>> andres = a & b
>>> andres
68
>>> bin(andres)
'0b1000100'
Двоичное ИЛИ
>>> orres = a | b
>>> orres
127
>>> bin(orres)
'0b1111111'
Двоичное исключающее ИЛИ
>>> isclres = a ^ b
>>> isclres
59
>>> bin(isclres)
'0b111011'
Сдвиг влево на 2 разряда
>>> shleft = a << 2
>>> shleft
372
>>> bin(shleft)
'0b101110100'
Сдвиг вправо на 3 разряда
>>> shright = b >> 3
>>> shright
12
>>> bin(shright)
'0b1100'

6.  Операции при работе с последовательностями (строками, списками, кортежами)

6.1 Объединение последовательностей (конкатенация)(+)

>>> 'Система '+'регулирования'  #Соединение двух строк символов
'Система регулирования'
>>> ['abc','de','fg']+['hi','jkl']  # Объединение двух списков
['abc', 'de', 'fg', 'hi', 'jkl']
>>> ('abc','de','fg')+('hi','jkl')  # Объединение двух кортежей
('abc', 'de', 'fg', 'hi', 'jkl')

6.2 Повторение *

>>> 'ля-'*5   #Повторение строки 5 раз
'ля-ля-ля-ля-ля-'
>>> ['ку','-']*3 #Повторение списка 3 раза
['ку', '-', 'ку', '-', 'ку', '-']
>>> ('кис','-')*4  #Повторение кортежа 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)

>>> stroka='Система автоматического управления'
'автомат' in stroka  #Наличие подстроки в строке
True
>>> 'ку' in ['ку','-']*3  #Наличие контекста в списке
True
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')  #Наличие контекста в кортеже
False

6.4 Подстановка значений в строку с помощью оператора "%"

>>> stroka='Температура = %g %s  %g'
>>> stroka % (16,' меньше ',25)
'Температура = 16  меньше   25'
>>> stroka='Температура = %(zn1)g %(sravn)s  %(zn2)g'
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16  меньше   25'

7. Оператор присваивания

7.1 Обычное присваивание значения переменной (=)

zz = -12

7.2 Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)

>>> zz+=5   # Значение zz увеличивается на 5
>>> zz
-7
>>> zz -= 3 # Значение zz уменьшается на 3
>>> zz
-10
>>> stroka='Система'
>>> stroka+=' регулирования'
>>> stroka
'Система регулирования'

7.3 Умножение текущего значения переменной на заданную величину ( * = ) или деление (/=)

>>> zz/=2
>>> zz
-5.0
>>> zz*=5
>>> zz
-25.0
>>> stroka2='привет'
>>> stroka2*=3
>>> stroka2
'приветприветпривет'

7.4 Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(** =)

>>> zz //= 2
>>> zz
-13.0
>> zz %= -2
>> zz
-1.0
>> step = 21
>> step **= 4
>> step
194481

7.5 Множественное присваивание

>>> w=v=10  # Переменным присваивается одно и то же значение
>>> n1,n2,n3=(11,-3,'all')  #Значения переменных берутся из кортежа
Присваивание кортежу
>>> a1, a2, a3 = "a", "b", "c" # Строка
>>> a1, a2, a3
('a', 'b', 'c')
>>> b1, b2, b3 = ["a", 1, None] # Список
>>> b1
'a'
>>> b3
>>> c1, c2, c3 = {"one": 1, "two": 2, "three": 3} # Словарь
>>> c1, c2, c3
('one', 'two', 'three')
>>> m1, m2, m3 = {52, 0, 3} # Множество
>>> m1, m2, m3
(0, 3, 52)

8. Логические операции - при создании логических выражений, дающих в результате вычисления значения  True или False

8.1 Операции сравнение: равенство ( = = ), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=)

>>> w
10
>>> v
10
>>> w==v # Равенство
True
>>> w!=v # Не равно
False
>>> w<v # Меньше
False
>>> w<=v # Меньше или равно
True

8.2 Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in)

Операции с множеством
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
>>> 'book' in mnoz1
True
>>> 'cap' in mnoz1
False
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> 'Vologda' in dic1
True
>>> 'Pskov' in dic1
False
>>> 56 in dic1.values()
True

>>> dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
>>> 'UII' in dct1['Depart']
True
>>> dct1['Depart'][1] == 'MM'
False

8.3 Создание больших логических выражений с использованием соединительных слов.

>>> a=17
>>> b=-6
>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
>>> (a < 20 or b == -6) and not ('pen' in mnoz1)
False
>>> not (a == 0) and ('Moscow' in dic1 or 'book' not in mnoz1)
False

8.4 Проверка ссылок переменных на один и тот же объект (is)

>>> w=v=10  #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти
>>> w is v
True
>>> w1=['A','B']
>>> w1
['A', 'B']
>>> v1=['A','B']
>>> v1
['A', 'B']
>>> w1 is v1
False

Когда создаю переменные w и v с одним числом, они ссылаются на один и тот же объект в памяти, поэтому w is v выдаёт True. А когда создаю два одинаковых списка, w1 и v1, то это уже два разных объекта, хоть и одинаковых по содержанию, поэтому w1 is v1 выдаёт False.

9. Операции с объектами, выполняемые с помощью методов

>>> 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 Методы для работы со строками

>>> stroka.find('пр')   #Возвращает номер позиции первого вхождения указанного контекста или значение -1
5
>>> stroka.count("с")  #Подсчет числа вхождений строки “с” в stroka
4
>>> stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>> spis22=stroka.split(' ')  #Возвращает список подстрок, между которыми в строке стоит  за-данный разделитель
>>> spis22
['Микропроцессорная', 'система', 'управления']
>>> stroka.upper()   #Возвращает строку со всеми заглавными буквами
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
>>> stroka3=" ".join(spis22)  #Возвращает строку, собранную из элементов списка
>>> stroka3
'Микропроцессорная система управления'
>>> stroka3.partition("с")  #Возвращает кортеж с результатами поиска «с» слева
('Микропроце', 'с', 'сорная система управления')
>>> stroka3.rpartition("с")  #Возвращает кортеж с результатами поиска «с» справа
('Микропроцессорная си', 'с', 'тема управления')

Метод format в Python применяется для красивого и удобного подставления данных внутрь строки. В строке делаются специальные “места” — фигурные скобки {}, а внутрь них можно подставить значения через .format(...).

>>> strk1='Момент времени {}, значение = {}'
>>> strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
>>> strk2='Момент времени {1}, значение = {0}:{2}'
>>> strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'

9.2 Методы для работы со списками

>>> spsk = ["apple", 52, (6, 9), "macbook", 52.52] #Создаю произвольный список
>>> spsk.pop(2) # Удаляет элемент с индексом 2
(6, 9)
>>> spsk.append('c') # Добавляет в конец списка элемент 'c'
>>> spsk
['apple', 52, 'macbook', 52.52, 'c']
>>> spsk.insert(2,'a') # Вставляет элемент 'a' на место индекса 2
>>> spsk
['apple', 52, 'a', 'macbook', 52.52, 'c']
>>> spsk.count('a') # Подсчитывает количество 'a', которые встречаются в списке
1

9.3 Самостоятельно создайте кортеж и изучите применение его методов.

>>> my_tuple = (5, 2, 7, 2, 9, 2)
>>> count_2 = my_tuple.count(2)  # Считает, сколько раз 2 встречается в кортеже
>>> count_2
3
>>> index_7 = my_tuple.index(7)  # Находит индекс первого появления 7 в кортеже
>>> index_7
2
>>> my_tuple
(5, 2, 7, 2, 9, 2)

9.4 Словари и множества

Словари

>>> d = {'name': 'Оля', 'age': 20}
>>> d.get('age')
20
>>> d.get('city', 'Москва')
'Москва'
>>> list(d.keys())
['name', 'age']
>>> list(d.values())
['Оля', 20]
>>> list(d.items())
[('name', 'Оля'), ('age', 20)]
>>> d.update({'city': 'Москва'})
>>> d
{'name': 'Оля', 'age': 20, 'city': 'Москва'}
>>> d.pop('age')
20
>>> d
{'name': 'Оля', 'city': 'Москва'}
>>> d.clear()
>>> d
{}
>>> d2 = d.copy()
>>> d2
{}

Множество

>>> s = {1, 2, 3}
>>> s.add(4)
s
{1, 2, 3, 4}
>>> s.remove(2)
>>> s
{1, 3, 4}
>>> s.discard(3)
>>>> s
{1, 4}
>>> x=s.pop()
>>> x
1
>>> x,s
1 {4}
>>> s.clear()
>>> s
>>> set()
>>> s2=s.copy()
>>> s.update([5,6])
>>> s
{5, 6}
>>> s3 = s.union({7, 8})
>>> s3
{8, 5, 6, 7}
>>> s4 = s.intersection({5, 6, 9})
>>> s4
{5, 6}
>>> s5 = s.difference({4, 6})
>>> s5
{5}
>>> s6 = s.symmetric_difference({5, 9})
>>> s6
{9, 6}
>>> {5}.issubset(s)
True
>>> s.issuperset({5})
True
>>> {10, 11}.isdisjoint(s)
True

10. Завершил работу со средой