TimoshenkoAA 1 месяц назад
Родитель 2143450c14
Сommit ac4c454197

@ -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()

Загрузка…
Отмена
Сохранить