|
|
|
@ -1,6 +1,6 @@
|
|
|
|
# Тема 3. Операции с объектами
|
|
|
|
# Тема 3. Операции с объектами
|
|
|
|
Выполнил : Тимошенко А.А.
|
|
|
|
# Выполнил : Тимошенко А.А.
|
|
|
|
Проверил : Козлюк Д.А.
|
|
|
|
# Проверил : Козлюк Д.А.
|
|
|
|
|
|
|
|
|
|
|
|
## Пункт 1.
|
|
|
|
## Пункт 1.
|
|
|
|
```
|
|
|
|
```
|
|
|
|
@ -28,8 +28,8 @@ True
|
|
|
|
>>> logiz4
|
|
|
|
>>> logiz4
|
|
|
|
False
|
|
|
|
False
|
|
|
|
```
|
|
|
|
```
|
|
|
|
### Пункт 2.2
|
|
|
|
2.2 Преобразование в целое с заданной системой счисления (по умолчанию
|
|
|
|
Преобразование в целое с заданной системой счисления (по умолчанию десятичная)
|
|
|
|
десятичная)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
>>> tt1=int(198.6)
|
|
|
|
>>> tt1=int(198.6)
|
|
|
|
>>> tt1
|
|
|
|
>>> tt1
|
|
|
|
@ -49,8 +49,26 @@ Traceback (most recent call last):
|
|
|
|
tt5=int("98.76")
|
|
|
|
tt5=int("98.76")
|
|
|
|
ValueError: invalid literal for int() with base 10: '98.76'
|
|
|
|
ValueError: invalid literal for int() with base 10: '98.76'
|
|
|
|
```
|
|
|
|
```
|
|
|
|
В последней иструкции видим ошибку. Это происходит из-за того, что int() не может перевести строку в целочисленный тип, если указана дробная часть.
|
|
|
|
Как видно, последняя команда вернула диагностическое сообщение. Это происходит
|
|
|
|
|
|
|
|
потому, что команда int ожидает, что ей сообщат строку, похожую на тип int
|
|
|
|
|
|
|
|
(только цифры, может быть знак в начале). Здесь есть точка, поэтому вознакает
|
|
|
|
|
|
|
|
несоответствие ожидаемого формата фактическому. Можно сначала строку перевести
|
|
|
|
|
|
|
|
в число с плавающей точкой, а потом уже в int.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Еще варианты:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
>>> tt6=int("+43")
|
|
|
|
|
|
|
|
>>> tt6
|
|
|
|
|
|
|
|
43
|
|
|
|
|
|
|
|
>>> tt6=int("aaa")
|
|
|
|
|
|
|
|
Traceback (most recent call last):
|
|
|
|
|
|
|
|
File "<pyshell#37>", line 1, in <module>
|
|
|
|
|
|
|
|
tt6=int("aaa")
|
|
|
|
|
|
|
|
ValueError: invalid literal for int() with base 10: 'aaa'
|
|
|
|
|
|
|
|
>>> tt6=int("aaa", 16)
|
|
|
|
|
|
|
|
>>> tt6
|
|
|
|
|
|
|
|
2730
|
|
|
|
|
|
|
|
```
|
|
|
|
Преобразование в вещественное число:
|
|
|
|
Преобразование в вещественное число:
|
|
|
|
```
|
|
|
|
```
|
|
|
|
>>> flt1 = float(789)
|
|
|
|
>>> flt1 = float(789)
|
|
|
|
@ -412,7 +430,7 @@ TypeError: can't mod complex numbers.
|
|
|
|
|
|
|
|
|
|
|
|
### Пункт 5.4
|
|
|
|
### Пункт 5.4
|
|
|
|
|
|
|
|
|
|
|
|
(возвращается единица, если оба разряда разные)
|
|
|
|
Двоичный XOR (^) (возвращается единица, если оба разряда разные)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
>>> bin(14^5)
|
|
|
|
>>> bin(14^5)
|
|
|
|
'0b1011'
|
|
|
|
'0b1011'
|
|
|
|
@ -490,7 +508,7 @@ TypeError: can't mod complex numbers.
|
|
|
|
'-0b1011110'
|
|
|
|
'-0b1011110'
|
|
|
|
```
|
|
|
|
```
|
|
|
|
Двоичное И
|
|
|
|
Двоичное И
|
|
|
|
```
|
|
|
|
``
|
|
|
|
>>> bin(93&102)
|
|
|
|
>>> bin(93&102)
|
|
|
|
'0b1000100'
|
|
|
|
'0b1000100'
|
|
|
|
```
|
|
|
|
```
|
|
|
|
@ -499,6 +517,11 @@ TypeError: can't mod complex numbers.
|
|
|
|
>>> bin(93|102)
|
|
|
|
>>> bin(93|102)
|
|
|
|
'0b1111111'
|
|
|
|
'0b1111111'
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
Двоичное XOR
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
>>> bin(93^102)
|
|
|
|
|
|
|
|
'0b111011' #Число стало короче, т.к. автоматически убрался незначащий ноль слева
|
|
|
|
|
|
|
|
```
|
|
|
|
Побитовый сдвиг
|
|
|
|
Побитовый сдвиг
|
|
|
|
```
|
|
|
|
```
|
|
|
|
>>> 93 >> 3
|
|
|
|
>>> 93 >> 3
|
|
|
|
@ -530,10 +553,9 @@ TypeError: can't mod complex numbers.
|
|
|
|
['abc', 'de', 'fg', 'hi', 'jkl']
|
|
|
|
['abc', 'de', 'fg', 'hi', 'jkl']
|
|
|
|
```
|
|
|
|
```
|
|
|
|
Кортежи
|
|
|
|
Кортежи
|
|
|
|
```
|
|
|
|
|
|
|
|
>>> ('abc','de','fg')+('hi','jkl')
|
|
|
|
>>> ('abc','de','fg')+('hi','jkl')
|
|
|
|
('abc', 'de', 'fg', 'hi', 'jkl')
|
|
|
|
('abc', 'de', 'fg', 'hi', 'jkl')
|
|
|
|
```
|
|
|
|
|
|
|
|
Конкатериновать словари и множества нельзя.
|
|
|
|
Конкатериновать словари и множества нельзя.
|
|
|
|
```
|
|
|
|
```
|
|
|
|
>>> {'one':1 , 'two':2} + {'three':3}
|
|
|
|
>>> {'one':1 , 'two':2} + {'three':3}
|
|
|
|
@ -618,7 +640,21 @@ Traceback (most recent call last):
|
|
|
|
stroka1 % (2024, 21, 45)
|
|
|
|
stroka1 % (2024, 21, 45)
|
|
|
|
TypeError: not all arguments converted during string formatting
|
|
|
|
TypeError: not all arguments converted during string formatting
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
Вот различные типы вставок для оператора %:
|
|
|
|
|
|
|
|
%s - строка
|
|
|
|
|
|
|
|
%d и %i - целое число (d - всегда десятичное, а i - десятичное или переведенное
|
|
|
|
|
|
|
|
в десятичное из другой с/с, а еще может содержать знак)
|
|
|
|
|
|
|
|
%f - число с плавающей точкой
|
|
|
|
|
|
|
|
%e - экспоненциальная форма записи числа
|
|
|
|
|
|
|
|
%g - автовыбор между e и f в зависимости от размера (очень большие и очень близкие к нулю
|
|
|
|
|
|
|
|
числа удобнее записать в экспоненциальной форме. Обычно %g будет использовать %f,
|
|
|
|
|
|
|
|
если значение находится в пределах от 1e-4 до 1e+15)
|
|
|
|
|
|
|
|
%.nf - число с плавающей точкой, но конкретным количеством знаков после запятой (пр. %.2f)
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
>>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
|
|
|
|
|
|
|
|
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
|
|
|
|
|
|
|
|
'Температура = 16 меньше 25'
|
|
|
|
|
|
|
|
```
|
|
|
|
## Пункт 7
|
|
|
|
## Пункт 7
|
|
|
|
|
|
|
|
|
|
|
|
Оператор присваивания
|
|
|
|
Оператор присваивания
|
|
|
|
@ -1079,6 +1115,36 @@ dict_keys(['key1', 'key2', 'key3', 'key4', 'key5'])
|
|
|
|
>>> di.values()
|
|
|
|
>>> di.values()
|
|
|
|
dict_values([1, 'val2', 34.6, 'f', False])
|
|
|
|
dict_values([1, 'val2', 34.6, 'f', False])
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
Пояснение:
|
|
|
|
|
|
|
|
Возвращаются объекты dict_keys, dict_values, dict_items, и они - объекты-итераторы. Они
|
|
|
|
|
|
|
|
ссылаются на адреса ключей или значений в памяти, но не хранят значения. Также эти объекты
|
|
|
|
|
|
|
|
автоматически обновляются при обновлении словаря. Например, добавим в словарь пару:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
>>> di["key6"] = 546
|
|
|
|
|
|
|
|
>>> di
|
|
|
|
|
|
|
|
{'key1': 1, 'key2': 'val2', 'key3': 34.6, 'key4': 'f', 'key5': False, 'key6': 546}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
Теперь в отдельный объект положим dict_keys:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
>>> dikeys = di.keys()
|
|
|
|
|
|
|
|
>>> dikeys
|
|
|
|
|
|
|
|
dict_keys(['key1', 'key2', 'key3', 'key4', 'key5', 'key6'])
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
Удалим с помощью метода .popitem() последний добавленный элемент:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
>>> di.popitem()
|
|
|
|
|
|
|
|
('key6', 546)
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
Вот как теперь выглядит словарь:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
>>> di
|
|
|
|
|
|
|
|
{'key1': 1, 'key2': 'val2', 'key3': 34.6, 'key4': 'f', 'key5': False}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
Вот как выглядит dikeys:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
>>> dikeys
|
|
|
|
|
|
|
|
dict_keys(['key1', 'key2', 'key3', 'key4', 'key5'])
|
|
|
|
|
|
|
|
```
|
|
|
|
Полное очищение словаря
|
|
|
|
Полное очищение словаря
|
|
|
|
```
|
|
|
|
```
|
|
|
|
>>> newdi.clear()
|
|
|
|
>>> newdi.clear()
|
|
|
|
|