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

15 KiB

Отчет по теме 2

Шинкаренко Варвара, А-02-23

1. Настройка рабочего каталога

Перед началом работы со средой настроили рабочий каталог

import os
os.chdir('C:\\Users\\LENOVO\\Desktop')

2. Изучение простых объектов

Присвоили значения двум объектам-переменным и рассмотрели разные способы их отображения:

f1 = 16; f2 = 3
f1, f2
(16, 3)
f1; f2
16
3

Изучили как просмотреть все существующие объекты среды, а также как получить их атрибуты:

dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os']
dir(f1)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'is_integer', 'numerator', 'real', 'to_bytes']

Определили классовую принадлежность объектов, а затем удалили их все и убедились в этом:

type(f2)
<class 'int'>
f3 = 15.5
type(f3)
<class 'float'>
del f1, f2, f3
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os']

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

Ввели несколько правильных и неправильных вариантов:

gg1 = 1.6
hh1 = 'Строка'
73sr = 3
SyntaxError: invalid decimal literal
and = 7
SyntaxError: invalid syntax

При неверных названиях появляется диагностическое сообщение.

4. Изучение ключевых слов

Вывели список ключевых слов и сохранили его в переменной kw:

import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
kw = keyword.kwlist
kw
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

5. Изучение встроенных идентификаторов

Сначала получили идентификаторов:

import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
kw = keyword.kwlist
kw
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

После этого изучили несколько функций на практике:

abs(-10)
10
len(kw)
35
len(hh1)
6
max(gg1, 3)
3
min(gg1, 3)
1.6
round(1.3)
1
round(gg1)
2
help(sorted)
Help on built-in function sorted in module builtins:

sorted(iterable, /, *, key=None, reverse=False)
    Return a new...
ww1 = [1, 8, 6, 10]
sorted(ww1)
[1, 6, 8, 10]

При необходимости пользовались командой help()

6. Имена чувствительны к регистру

Создали две схожие переменные, имена которых отличются только регистром некоторых букв. Вывели эти переменные и убедились, что в среде они действительно считаются разными:

Gg1 = 45
Gg1
45
gg1
1.6

7. Изучение базовых типов объектов

7.1 Логический тип (bool)

Создали две логические переменные

bb1 = True; bb2 = False
bb1; bb2
True
False
type(bb1)
<class 'bool'>

7.2 Изучили другие типы переменных

ii1 = -1234567890
ff1 = -8.9876e-12
dv = 0b1101010
vsm1 = 0o52765
shest1 = 0x7109af6
ccl = 2-3j
a = 3.67; b = -0.
cc2 = complex(a,b)

7.3 Изучили строку символов

Для начала получили строку символов:

ss1 = 'Это - строка символ'

Затем получили более сложную кострукцию, воспользовавшись экранированными последовательностями:

ss1a = 'Это - \'строка символоов\',\n \t выводим на двух строках'
print(ss1a)
Это - 'строка символоов',
 	 выводим на двух строках
ss1b = "Меня зовут: \n Шинкаренко В. А."
print (ss1b)
Меня зовут: 
 Шинкаренко В. А.

Изучили задание многострочных строк с использованием тройных кавык:


mnogo = """Нетрудно заметить, что в результате операции над числами разных типов получается число, имеющее более сложный тип из тех, которые учавствуют в операции"""
print(mnogo)
Нетрудно заметить, что в результате операции над числами разных типов получается число, имеющее более сложный тип из тех, которые учавствуют в операции

Попробуем обратиться к элементам строки, используя индексы символов (нумерация начинается с 0):

ss1[0]
'Э'
ss1[8]
'р'
ss1[-2]
'о'

В последней строке отсчет ведется с конца строки. Создадим с помощью той же команды новые объекты, обрезав уже существующий:

ss1[6:9]
'стр' # Символы от 6го до 8го (Символ с 9м индексом не входит)
ss1[13:]
'символ' # Часть строки от 13го индекса и до конца
ss1[13:13]
'' # Сам 13й символ
ss1[:13]
'Это - строка ' # Наоборот, с начала и до 13го символа
ss1[5:-8]
' строк' # Символы от 5го до 8го м конца
ss1[3:17:2]
'  тоасм' # Символы с 3го индекса по 16й с шагом 2
ss1[17:3:-2]
'омсаот ' # Символы с 17го по 3й, при этом шаг делается в обратном направлении
# Получается примерно тот же результат, если заменить 17 на -4 (главное, что четное)
ss1[-4:3:-2]
'мсаот '
ss1[-6:3:-2]
'саот '
ss1[-2:3:-2]
'омсаот '

Попробуем изменить строку:

ss1 = ss1[:4]+'='+ss1[5:]
ss1
'Это = строка символ'

Проведем все те же действия с другой строкой:

bb1 = ss1b[3] + ' - ' + ss1b[17:20]
bb1
'я - кар'
bb2 = ss1b[3] + ' ' + ss1b[5:9] + ' ' + ss1b[15] + ss1b[17:20] + ss1b[28]
bb2
'я зову икарА'
bb3 = ss1b[:10] + ss1b[13:16] + ss1b[17:20] + ss1b[21] + ss1b[23]
bb3
'Меня зовут Шикарно'

Создали и отобразили несколько объектов разных типов:

x1 = 16
type(x1)
<class 'int'>
x2 = 12.4
type(x2)
<class 'float'>
x3 = 'Буквы'
type(x3)
<class 'str'>
x4 = [1, 4, 9]
type(x4)
<class 'list'>
x5 = ['one', 'two', 'three']
type(x5)
<class 'list'>
x6 = True
type(x6)
<class 'bool'>
x7 = True, False
type(x7)
<class 'tuple'>

x1
16
x2
12.4
x3
'Буквы'
x4
[1, 4, 9]
x5
['one', 'two', 'three']
x6
True
x7
(True, False)

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

8.1 Тип объекта: список

Изучили создание и отображение списков:

spis1 = [111, 'Spisok', 5-9j]
spis1
[111, 'Spisok', (5-9j)]
stup = [0,0,1,1,1,1,1,1,1]
stup
[0, 0, 1, 1, 1, 1, 1, 1, 1]
spis = [9, 67,
        69, 75, 45, 30,
        100]
spis
[9, 67, 69, 75, 45, 30, 100]
spis[-2]
30
stup[2:9]
[1, 1, 1, 1, 1, 1, 1]
spis[0] = 'Spisok' # Заменили один из элементов списка
spis
['Spisok', 67, 69, 75, 45, 30, 100]
len(spis) # Нашли длину списка
7

Изучили методы списка:

help(spis1.append)
Help on built-in function append:

append(object, /) method of builtins.list instance
    Append object to the end of the list.

spis1.append('New item') # Добавили элемент в конец списка
spis1
[111, 'Spisok', (5-9j), 'New item']
spis1 + ['New item'] # Добавил только временно
[111, 'Spisok', (5-9j), 'New item', 'New item']
spis1
[111, 'Spisok', (5-9j), 'New item']
spis1.append(ss1b)
spis1
[111, 'Spisok', (5-9j), 'New item', 'Меня зовут: \n Шинкаренко В. А.']
spis1.pop(1) # Удалили один элемент
'Spisok'
spis1
[111, (5-9j), 'New item', 'Меня зовут: \n Шинкаренко В. А.']
spis1.insert(0, 'zero') # Вставляет элемент на место нужного индекса, все остальное двигает
spis1
['zero', 111, (5-9j), 'New item', 'Меня зовут: \n Шинкаренко В. А.']
spis1.remove(111) # Удаляет нужный элемент, если такого нет, выдает ошибку
spis1
['zero', (5-9j), 'New item', 'Меня зовут: \n Шинкаренко В. А.']

spis1.extend('New item') # Расширяет список нужным элементом
spis1
['zero', (5-9j), 'New item', 'Меня зовут: \n Шинкаренко В. А.', 'N', 'e', 'w', ' ', 'i', 't', 'e', 'm']
ex1 = [-1, 20, -40, 15] # Сортировка без создания нового объекта
ex1.sort(key = abs, reverse = True)
ex1
[-40, 20, 15, -1]
ex1.reverse() # Переворот наоборот
ex1
[-1, 15, 20, -40]
excopy = ex1.copy() # Копирование объекта
excopy
[-1, 15, 20, -40]
ex1.index(-1) # Выдает индекс нужного элемента
0
ex1.count(-40) # Количество нужных элементов
1
ex1.clear() # Очищает объект
ex1
[]

Изучили создание вложенных списков:

spis2 = [spis1, [1,2,3,4]]
spis2[0][1]
(5-9j)
spis2[1][0]
1
spis2[0][1] = 78
spis2
[['zero', 78, 'New item', 'Меня зовут: \n Шинкаренко В. А.', 'N', 'e', 'w', ' ', 'i', 't', 'e', 'm'], [1, 2, 3, 4]]
spis1 # Первый список тоже изменился
['zero', 78, 'New item', 'Меня зовут: \n Шинкаренко В. А.', 'N', 'e', 'w', ' ', 'i', 't', 'e', 'm']
# Собственный вложенный список:

let = 'лет'
mne = ['м', 'н', 'е']
age = 20
mne = ['М', 'н', 'е']
my_age = [mne, age, let, '!']
my_age
[['М', 'н', 'е'], 20, 'лет', '!']

8.2 Тип объекта: кортеж

Изучили создание данного типа объекта и работу с ним:

kort1 = (222, 'Kortezh', 77 + 8j)
kort1 = kort1 + (ss1b,)
kort1
(222, 'Kortezh', (77+8j), 'Меня зовут: \n Шинкаренко В. А.')
kort2 = kort1[:2] + kort1[3:]
kort2
(222, 'Kortezh', 'Меня зовут: \n Шинкаренко В. А.')
kort1.index(222)
0
kort1.count(222)
1

word = 'World'
coma = ','
my_kortezh = ('H', 'e', 'l', 'l', 'o', coma, word, '!')
my_kortezh
('H', 'e', 'l', 'l', 'o', ',', 'World', '!')

8.3 Тип объекта: словарь

Изучили способы создания и управления словарей:

dic1 = {'Saratov':145, 'Orel':56, 'Vologda':45}
dic1['Orel']
56
dic1['Pskov'] = 78
dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
sorted(dic1.values())
[45, 56, 78, 145]
dic2 = {1:'mean', 2:'standart deviation', 3:'correlation'}
dic3 = {'statistics':dic2, 'POAS':['base', 'elementary', 'programming']}
dic3
{'statistics': {1: 'mean', 2: 'standart deviation', 3: 'correlation'}, 'POAS': ['base', 'elementary', 'programming']}
dic3['statistics'][2]
'standart deviation'
dic4 = dict([(1, ['A', 'B', 'C']), (2, [4, 5]), ('Q', 'Prim'), ('Stroka', ss1b)])
dic5 = dict(zip(['A', 'B', 'C', 'Stroka'], [16, -3, 9, ss1b]))          

# Мой словарь:
my_kortezh
            
('H', 'e', 'l', 'l', 'o', ',', 'World', '!')
my_age
            
[['М', 'н', 'е'], 20, 'лет', '!']
my_dic = dict(zip(my_kortezh, my_age))
            
my_dic
            
{'H': ['М', 'н', 'е'], 'e': 20, 'l': '!'} # Количество элементов соотвествует минимальному количеству эементов 2х объектов

8.4 Тип объекта: множество

mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
            
mnoz1
            
{'датчик', 'микропроцессор', 'линия связи', 'двигатель'}
len(mnoz1) # Нашли длину объекта
            
4
'датчик' in mnoz1
            
True
mnoz1.add('реле') # Добавили элементт
            
mnoz1.remove('линия связи') # Удалили элемент
            
mnoz1
            
{'двигатель', 'датчик', 'реле', 'микропроцессор'}          
mnoz_mine = {52, 'Ночь', 'День', my_kortezh, 'Ночь'}
            
mnoz_mine # Создали свой объект-множество
            
{'Ночь', 52, 'День', ('H', 'e', 'l', 'l', 'o', ',', 'World', '!')}
mnoz_mine.remove('Ночь')
mnoz_mine.add('День')
mnoz_mine
            
{52, 'День', ('H', 'e', 'l', 'l', 'o', ',', 'World', '!')}

9. Завершили сеанс работы.