В папку C:\Users\Дмитрий\OneDrive\Рабочий стол\Goloshchapov\python-labs\TEMA1 перенесены материалы
На рабочем столе создана папка Goloshchapov. После этого с помощью команды git clone http://uit.mpei.ru/git/GoloshchapovDY/python-labs.git мы клонируем форк репозитария в эту папку.
и распакован архив Tema1.rar
# Пункт 2 Знакомство с интерпретатором
# 2 Знакомство с интерпретатором
Запущен интерпретатор Python 3.10
Запущен интерпретатор Python 3.10
# Пункт 3 Введение пробных команд
# 3 Введение пробных команд
print("hello")
>>>print("hello")
hello
hello
# Пункт 4 Вводим еще одну инструкцию
# 4 Вводим еще одну инструкцию
h = input('Your name = ')
>>>h = input('Your name = ')
Your name = Dima
Your name = Dima
h
>>>h
'Dima'
'Dima'
# Пункт 5 Завершение работы интерпретатора
# 5 Завершение работы интерпретатора
exit()
>>>exit()
# Пункты 6-7
# 6-7
Запущена IDLE Python 3.10, изучено устройство главного командного окна
Запущена IDLE Python 3.10, изучено устройство главного командного окна
Видно, что рeзультат компиляции тяжел для восприятия человеком, вероятно, из-за
При выполнении скрипта Python сначала
несоответствия кодировок. Комплиляция программ необходима, чтобы
преобразовывает его в байт-код (.рус), а затем уже он выполняется с
перевести команды из человекопонятной формы в машинный код, который
помощью виртуальный машины. Это ускорит повторную загрузку программы, так как будет пропущен этап преобразования в байт-код, и виртуальная машина сможет напрямую выполнить байт-код.
может быть обработан процессором. При выполнении скрипта Python сначала
преобразовывает его в байт-код (.рус), а затем уже он компилируется с
помощью виртуальный машины. Это ускорит повторную загрузку программы.
# Пункт 13 Создание отдельного файла для команд и результатов их выполнения
# 13 Создание отдельного файла для команд и результатов их выполнения
Все верные команды из командного окна IDLE скопированы в отдельный файл
Все верные команды из командного окна IDLE скопированы в отдельный файл
# Пункт 14 Изучение раздела помощи (Help) главного меню.
# 14 Изучение раздела помощи (Help) главного меню.
В разделе помощи help можно найти следующие опции:
В разделе помощи help можно найти следующие опции:
@ -128,7 +124,7 @@ Turtle Demo - окно работы и помощь модуля для рабо
Проверка команд:
Проверка команд:
help (print)
>>>help (print)
Help on built-in function print in module builtins:
Help on built-in function print in module builtins:
@ -141,7 +137,7 @@ Turtle Demo - окно работы и помощь модуля для рабо
end: string appended after the last value, default a newline.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
flush: whether to forcibly flush the stream.
help(print), help(input)
>>>help(print), help(input)
Help on built-in function print in module builtins:
Help on built-in function print in module builtins:
Сортировка по возрастанию(можно применить reverse = True для сортировки по убыванию):
Сортировка по возрастанию(можно применить reverse = True для сортировки по убыванию):
sorted ([3, 7, 9, 75, 0, -1])
>>>sorted ([3, 7, 9, 75, 0, -1])
[-1, 0, 3, 7, 9, 75]
[-1, 0, 3, 7, 9, 75]
Суммирование:
Суммирование:
sum ([7, 3, 5])
>>>sum ([7, 3, 5])
15
15
Объединение объектов в кортеж (возвращается указатель на участок памяти):
Объединение объектов в кортеж (возвращается указатель на участок памяти):
list1 = [1, 2, 3]
>>>list1 = [1, 2, 3]
list2 = [4, 5, 6]
>>>list2 = [4, 5, 6]
zip (list1, list2)
>>>zip (list1, list2)
<zipobjectat0x0000019F7EA6E700>
<zipobjectat0x0000019F7EA6E700>
Это итератор - указатель на объект памяти.
Это итератор - указатель на объект памяти.
# Пункт 6. Пример того, что Python - регистрочувствительный язык.
# 6. Пример того, что Python - регистрочувствительный язык.
Gg1 = 45
>>>Gg1 = 45
gg1, Gg1
>>>gg1, Gg1
(1.6, 45)
(1.6, 45)
gg1 == Gg1
>>>gg1 == Gg1
False
False
# Пункт 7. Изучение простых базовых типов объектов: логический (bool), целый (int), вещественный (float), комплексный (complex), строка символов (str).
# 7. Изучение простых базовых типов объектов: логический (bool), целый (int), вещественный (float), комплексный (complex), строка символов (str).
## 7.1.Логический тип.
## 7.1.Логический тип.
bb1 = True
>>>bb1 = True
bb2 = False
>>>bb2 = False
type(bb1)
>>>type(bb1)
<class'bool'>
<class'bool'>
## 7.2. Другие простые типы.
## 7.2. Другие простые типы.
Целое число (десятичное)
Целое число (десятичное)
ii1=-1234567890
>>>ii1=-1234567890
type(ii1)
>>>type(ii1)
<class'int'>
<class'int'>
Экспоненциальная форма записи числа
Экспоненциальная форма записи числа
ff1 = 8.987e-12
>>>ff1 = 8.987e-12
type(ff1)
>>>type(ff1)
<class'float'>
<class'float'>
Двоичное число (префикс 0b - binary)
Двоичное число (префикс 0b - binary)
dv1 = 0b1100101
>>>dv1 = 0b1100101
type(dv1)
>>>type(dv1)
<class'int'>
<class'int'>
Восьмеричное число (0о - octal)
Восьмеричное число (0о - octal)
vsm1 = 0o52765
>>>vsm1 = 0o52765
type(vsm1)
>>>type(vsm1)
<class'int'>
<class'int'>
Шестнадцатеричное число (0х - hexadecimal)
Шестнадцатеричное число (0х - hexadecimal)
shest1 = 0x7109af6
>>>shest1 = 0x7109af6
type(shest1)
>>>type(shest1)
<class'int'>
<class'int'>
Комплексное число
Комплексное число
cc1 = 2 - 3j
>>>cc1 = 2 - 3j
type(cc1)
>>>type(cc1)
<class'complex'>
<class'complex'>
Создание комплексного числа
Создание комплексного числа
a = 3.67
>>>a = 3.67
b = 0.45
>>>b = 0.45
cc2 = complex (a, b)
>>>cc2 = complex (a, b)
cc2
>>>cc2
(3.67+0.45j)
(3.67+0.45j)
type (cc2)
>>>type (cc2)
<class'complex'>
<class'complex'>
## 7.3. Строка символов.
## 7.3. Строка символов.
@ -198,72 +198,72 @@
Одинарные и двойные кавычки взаимозаменяемы, но если открыта одинарная, то закрыта тоже
Одинарные и двойные кавычки взаимозаменяемы, но если открыта одинарная, то закрыта тоже
должна быть одинарная
должна быть одинарная
ss1 = "Это - строка символов"
>>>ss1 = "Это - строка символов"
ss2 = 'Это - строка символов'
>>>ss2 = 'Это - строка символов'
ss1 == ss2
>>>ss1 == ss2
True
True
Внутри строки символов можно использовать, так называемые, «экранированные последовательности, начинающиеся со знака «\»(обратный слеш), например, \, ', ", \t, \n и другие. Пример:
Внутри строки символов можно использовать, так называемые, «экранированные последовательности, начинающиеся со знака «\»(обратный слеш), например, \, ', ", \t, \n и другие. Пример:
ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
>>>ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
print(ss1a)
>>>print(ss1a)
Это - " строка символов ",
Это - " строка символов ",
выводимая на двух строках
выводимая на двух строках
Создадим строку по шаблону:
Создадим строку по шаблону:
ss1b = 'Меня зовут: \n Голощапов Д.Е.'
>>>ss1b = 'Меня зовут: \n Голощапов Д.Е.'
print(ss1b)
>>>print(ss1b)
Меня зовут:
Меня зовут:
Голощапов Д.Е.
Голощапов Д.Е.
Многострочные строки можно задавать в виде значения объекта с использованием тройных кавычек, например:
Многострочные строки можно задавать в виде значения объекта с использованием тройных кавычек, например:
mnogo="""Нетрудно заметить , что в результате операции
>>>mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число,
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции."""
имеющее более сложный тип из тех, которые участвуют в операции."""
print(mnogo)
>>>print(mnogo)
Нетрудно заметить , что в результате операции
Нетрудно заметить , что в результате операции
над числами разных типов получается число,
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.
имеющее более сложный тип из тех, которые участвуют в операции.
При вводе такой строки символ приглашения в начале строки не появится, пока не будет вновь введены тройные кавычки. Можно обращаться к частям строки символов с использованием индексов символов по их порядку в строке. При этом надо учитывать, что нумерация символов начинается с 0. Например:
При вводе такой строки символ приглашения в начале строки не появится, пока не будет вновь введены тройные кавычки. Можно обращаться к частям строки символов с использованием индексов символов по их порядку в строке. При этом надо учитывать, что нумерация символов начинается с 0. Например:
ss1[0]
>>>ss1[0]
'Э'
'Э'
ss1[8]
>>>ss1[8]
'р'
'р'
ss1[-2]
>>>ss1[-2]
'о'
'о'
Операция «разрезания» или «создания среза», создающая новый объект:
Операция «разрезания» или «создания среза», создающая новый объект:
ss1[6:9] #Это часть строки – символы с 6-го индекса по 8-й (9-й не включается!)
>>>ss1[6:9] #Это часть строки – символы с 6-го индекса по 8-й (9-й не включается!)
'стр'
'стр'
ss1[13:] #Это часть строки – с 13-го индекса и до конца
>>>ss1[13:] #Это часть строки – с 13-го индекса и до конца
'символов'
'символов'
ss1[:13] #Это часть строки – с начала и до 12-го индекса включительно
>>>ss1[:13] #Это часть строки – с начала и до 12-го индекса включительно
'Это - строка '
'Это - строка '
ss1[5:-8] #Это часть строки – с 5-го индекса и до 8-го от конца
>>>ss1[5:-8] #Это часть строки – с 5-го индекса и до 8-го от конца
' строка '
' строка '
ss1[3:17:2] #Часть строки – с 3-го по 16-й индексы с шагом 2
>>>ss1[3:17:2] #Часть строки – с 3-го по 16-й индексы с шагом 2
' тоасм'
' тоасм'
Обратим внимание на то, что в срезе указываются не позиции элементов, а их индексы и что указываемая правая граница в срез не включается.
Обратим внимание на то, что в срезе указываются не позиции элементов, а их индексы и что указываемая правая граница в срез не включается.
Значение при отрицательном значении шага:
Значение при отрицательном значении шага:
ss1[17:3:-2]
>>>ss1[17:3:-2]
'омсаот '
'омсаот '
При замене 17 на -4 получается такой же результат:
При замене 17 на -4 получается такой же результат:
ss1[-4:3:-2]
>>>ss1[-4:3:-2]
'омсаот '
'омсаот '
Строка является неизменяемым объектом. Попробуем, например, инструкцию
Строка является неизменяемым объектом. Попробуем, например, инструкцию
ss1[4]='='
>>>ss1[4]='='
Traceback (most recent call last):
Traceback (most recent call last):
File "<pyshell#78>", line 1, in <module>
File "<pyshell#78>", line 1, in <module>
ss1[4]='='
ss1[4]='='
@ -271,76 +271,76 @@
Однако, можно это сделать по-другому, переопределив её:
Однако, можно это сделать по-другому, переопределив её:
ss1=ss1[:4]+'='+ss1[5:]
>>>ss1=ss1[:4]+'='+ss1[5:]
ss1
>>>ss1
'Это = строка символов'
'Это = строка символов'
С использованием ранее созданной строки ss1b попробуем создать объекты с разными срезами исходной строки.
С использованием ранее созданной строки ss1b попробуем создать объекты с разными срезами исходной строки.
ss1b[-1]
>>>ss1b[-1]
'.'
'.'
ss1b_cut = ss1b [::-1]
>>>ss1b_cut = ss1b [::-1]
ss1b_cut
>>>ss1b_cut
'.Е.Д вопащолоГ \n :тувоз янеМ'
'.Е.Д вопащолоГ \n :тувоз янеМ'
Самостоятельное создание объектов разных типов. Отображение типов и значений созданных объектов.
Самостоятельное создание объектов разных типов. Отображение типов и значений созданных объектов.
num10 = 26
>>>num10 = 26
type(num10)
>>>type(num10)
<class'int'>
<class'int'>
num16 = hex(num10)
>>>num16 = hex(num10)
num16
>>>num16
'0x1a'
'0x1a'
type(num16)
>>>type(num16)
<class'str'>
<class'str'>
# Пункт 8. Списки (list), кортежи (tuple), словари (dict), множества (set).
# 8. Списки (list), кортежи (tuple), словари (dict), множества (set).
## 8.1. Список list - изменяемый тип данных. Это упорядоченная последовательность из элементов
## 8.1. Список list - изменяемый тип данных. Это упорядоченная последовательность из элементов
одного или разных типов.
одного или разных типов.
Пример списка с 3 элементами разных типов:
Пример списка с 3 элементами разных типов:
spis1=[111,'Spisok',5-9j]
>>>spis1=[111,'Spisok',5-9j]
spis1
>>>spis1
[111, 'Spisok', (5-9j)]
[111, 'Spisok', (5-9j)]
Еще пример: список, содержащий последовательность отсчетов сигнала в виде «единичной ступеньки»:
Еще пример: список, содержащий последовательность отсчетов сигнала в виде «единичной ступеньки»:
stup=[0,0,1,1,1,1,1,1,1]
>>>stup=[0,0,1,1,1,1,1,1,1]
stup
>>>stup
[0, 0, 1, 1, 1, 1, 1, 1, 1]
[0, 0, 1, 1, 1, 1, 1, 1, 1]
Список можно вводить на нескольких строках. При этом список будет считаться незавершенным, пока не будет введена закрывающая квадратная скобка, например:
Список можно вводить на нескольких строках. При этом список будет считаться незавершенным, пока не будет введена закрывающая квадратная скобка, например:
spis=[1,2,3,4,
>>>spis=[1,2,3,4,
5,6,7,
5,6,7,
8,9,10]
8,9,10]
spis
>>>spis
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
При работе с элементами списка можно использовать индексы точно так же, как это делали с элементами символьной строки, например, ссылка на последний элемент списка:
При работе с элементами списка можно использовать индексы точно так же, как это делали с элементами символьной строки, например, ссылка на последний элемент списка:
spis1 [-1]
>>>spis1 [-1]
(5-9j)
(5-9j)
или
или
stup [-8 :: 2]
>>>stup [-8 :: 2]
[0, 1, 1, 1]
[0, 1, 1, 1]
Проверим возможность изменения списка, например:
Проверим возможность изменения списка, например:
spis1[1]='Список'
>>>spis1[1]='Список'
spis1
>>>spis1
[111, 'Список', (5-9j)]
[111, 'Список', (5-9j)]
Текущее число элементов в списке можно узнать с помощью функции len():
Текущее число элементов в списке можно узнать с помощью функции len():
len(spis1)
>>>len(spis1)
3
3
Методы объекта находятся в списке его атрибутов, который выводится с помощью уже известной функции dir(). Описание метода можно вывести с помощью функции help() по образцу
Методы объекта находятся в списке его атрибутов, который выводится с помощью уже известной функции dir(). Описание метода можно вывести с помощью функции help() по образцу
help(spis1.append)
>>>help(spis1.append)
Help on built-in function append:
Help on built-in function append:
append(object, /) method of builtins.list instance
append(object, /) method of builtins.list instance
@ -348,53 +348,53 @@
С помощью методов объектов-списков можно добавлять и удалять элементы:
С помощью методов объектов-списков можно добавлять и удалять элементы:
spis1.append('New item')
>>>spis1.append('New item')
spis1
>>>spis1
[111, 'Список', (5-9j), 'New item']
[111, 'Список', (5-9j), 'New item']
spis1+['New item']
>>>spis1+['New item']
[111, 'Список', (5-9j), 'New item', 'New item']
[111, 'Список', (5-9j), 'New item', 'New item']
spis1
>>>spis1
[111, 'Список', (5-9j), 'New item']
[111, 'Список', (5-9j), 'New item']
Обратим внимание на то, что в этой инструкции новый список только отображается, но не сохраняется.
Обратим внимание на то, что в этой инструкции новый список только отображается, но не сохраняется.
Добавим в конец списка spis1 строку ss1b и отобразите список:
Добавим в конец списка spis1 строку ss1b и отобразите список:
Видим, что spis1 тоже изменился. Это происходит потому, что python работает не просто с объектами, а с ссылками на участки памяти. То есть, в Python списки передаются по ссылке, а не по значению.Упоминая spis1 в строке spis2=[spis1,[4,5,6,7]] мы не создаем копию spis1, а сообщаем именно тот список, поэтому его изменения в составе spis2 отображаются на исходном spis1.
Видим, что spis1 тоже изменился. Это происходит потому, что python работает не просто с объектами, а с ссылками на участки памяти. То есть, в Python списки передаются по ссылке, а не по значению.Упоминая spis1 в строке spis2=[spis1,[4,5,6,7]] мы не создаем копию spis1, а сообщаем именно тот список, поэтому его изменения в составе spis2 отображаются на исходном spis1.
Обратим внимание на то, что в силу неупорядоченности словаря при его выводе
Обратим внимание на то, что в силу неупорядоченности словаря при его выводе
элементы могут располагаться не в том порядке, в каком они задавались при его формировании.
элементы могут располагаться не в том порядке, в каком они задавались при его формировании.
Для того, чтобы получить перечень ключей или значений из словаря следует использовать методы keys или values, создающие списки, соответственно, ключей или значений из словаря. Функция sorted позволяет увидеть список упорядоченным по ключам или по значениям:
Для того, чтобы получить перечень ключей или значений из словаря следует использовать методы keys или values, создающие списки, соответственно, ключей или значений из словаря. Функция sorted позволяет увидеть список упорядоченным по ключам или по значениям:
sorted(dic1.keys())
>>>sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
['Orel', 'Pskov', 'Saratov', 'Vologda']
sorted(dic1.values())
>>>sorted(dic1.values())
[45, 56, 78, 145]
[45, 56, 78, 145]
Элементы словаря могут быть любого типа, в том числе и словарями. Например,создадим словарь:
Элементы словаря могут быть любого типа, в том числе и словарями. Например,создадим словарь:
Самостоятельно придумайте объект-кортеж с 7 элементами и объект-список с 5 элементами и попробуйте создать из них словарь с помощью функций dict и zip. Сколько элементов в получившемся словаре? Объясните это число.
Самостоятельно придумайте объект-кортеж с 7 элементами и объект-список с 5 элементами и попробуйте создать из них словарь с помощью функций dict и zip. Сколько элементов в получившемся словаре? Объясните это число.
Как мы видим длина словаря составляет 5 объектов. Это связано с функцией zip, которая делает так, что длина итогового объекта будет соответствовать минимальной длине составляющего.
Как мы видим длина словаря составляет 5 объектов. Это связано с функцией zip, которая делает так, что длина итогового объекта будет соответствовать минимальной длине составляющего.
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции.
1.Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции.
Создать переменную со значением, совпадающим с первой буквой из familia.
2.Создать переменную со значением, совпадающим с первой буквой из familia.
Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
3.Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
4.Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
5.Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
6.Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
7.Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
Создайте словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам.
8.Создайте словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам.
## Решение
## Решение
familia = 'Goloshchapov'
1. Создаю переменную familia.
fam1 = familia[0]
fam1
familia = 'Goloshchapov'
'G'
import keyword
2. Создаю переменную, которая равна первой букве familia.
7. Определяю, сколько раз в кортеже присутствуют студенты с именем «Дима».
kort_nam.count("Dima")
1
8. Создаю словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам.