ответвлено от main/python-labs
Тес по модулю 1
Этот коммит содержится в:
@@ -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()
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user