ответвлено от main/python-labs
Тес по модулю 1
Этот коммит содержится в:
@@ -1,6 +1,6 @@
|
||||
# Тема 3. Операции с объектами
|
||||
Выполнил : Тимошенко А.А.
|
||||
Проверил : Козлюк Д.А.
|
||||
# Выполнил : Тимошенко А.А.
|
||||
# Проверил : Козлюк Д.А.
|
||||
|
||||
## Пункт 1.
|
||||
```
|
||||
@@ -28,8 +28,8 @@ True
|
||||
>>> logiz4
|
||||
False
|
||||
```
|
||||
### Пункт 2.2
|
||||
Преобразование в целое с заданной системой счисления (по умолчанию десятичная)
|
||||
2.2 Преобразование в целое с заданной системой счисления (по умолчанию
|
||||
десятичная)
|
||||
```
|
||||
>>> tt1=int(198.6)
|
||||
>>> tt1
|
||||
@@ -49,8 +49,26 @@ Traceback (most recent call last):
|
||||
tt5=int("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)
|
||||
@@ -412,7 +430,7 @@ TypeError: can't mod complex numbers.
|
||||
|
||||
### Пункт 5.4
|
||||
|
||||
(возвращается единица, если оба разряда разные)
|
||||
Двоичный XOR (^) (возвращается единица, если оба разряда разные)
|
||||
```
|
||||
>>> bin(14^5)
|
||||
'0b1011'
|
||||
@@ -490,7 +508,7 @@ TypeError: can't mod complex numbers.
|
||||
'-0b1011110'
|
||||
```
|
||||
Двоичное И
|
||||
```
|
||||
``
|
||||
>>> bin(93&102)
|
||||
'0b1000100'
|
||||
```
|
||||
@@ -499,6 +517,11 @@ TypeError: can't mod complex numbers.
|
||||
>>> bin(93|102)
|
||||
'0b1111111'
|
||||
```
|
||||
Двоичное XOR
|
||||
```
|
||||
>>> bin(93^102)
|
||||
'0b111011' #Число стало короче, т.к. автоматически убрался незначащий ноль слева
|
||||
```
|
||||
Побитовый сдвиг
|
||||
```
|
||||
>>> 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')
|
||||
```
|
||||
|
||||
Конкатериновать словари и множества нельзя.
|
||||
```
|
||||
>>> {'one':1 , 'two':2} + {'three':3}
|
||||
@@ -618,7 +640,21 @@ Traceback (most recent call last):
|
||||
stroka1 % (2024, 21, 45)
|
||||
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
|
||||
|
||||
Оператор присваивания
|
||||
@@ -1079,6 +1115,36 @@ dict_keys(['key1', 'key2', 'key3', 'key4', 'key5'])
|
||||
>>> di.values()
|
||||
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()
|
||||
|
||||
Ссылка в новой задаче
Block a user