Курс

"Программирование Phyton"

Модули и пакеты, работа с файлами и форматированный вывод

Многие языки программирования предоставляют классы для работы с файлами и директориями проекта. Язык Python обладает множеством классов для записи и чтения данных из файлов

Файл — это всего лишь набор данных, сохраненный в виде последовательности битов на компьютере. Информация хранится в куче данных (структура данных) и имеет название «имя файла» (filename)

В Python существует два типа файлов:

Текстовые

Бинарные

 

Текстовые файлы

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

Текст может храниться в двух форматах: (.txt) — простой текст и (.rtf) — «формат обогащенного текста»

 

Бинарные файлы

В бинарных файлах данные отображаются в закодированной форме (с использованием только нулей (0) и единиц (1) вместо простых символов). В большинстве случаев это просто последовательности битов.

Они хранятся в формате .bin

 

Работа с файлами

При работе с файлами всегда необходимо помнить две вещи:

  1. Перед началом работы с файлом его необходимо открыть

  2. После завершения работы с файлом его необходимо закрыть

Если файл не открыт или же неверно открыт, то вы не можете полноценно работать с его содержимым

С закрытием все проще, но и коварнее. Если вы не закроете файл, то программа будет работать верно, тем не менее, чем больше будет открытых файлов, тем больше программа будет перегружена и в какой-то момент она просто зависнет или выключиться

 

Исключения и файлы

Поскольку не всегда известно будет ли файл в проекте или на компьютере пользователя, то всегда лучше открывать файлы за счёт использования исключений. Выполняйте открытие файлов в блоке try except и тем самым вы обезопасите себя от любых непредвиденных обстоятельств

 

Работа с файлами

Для открытия файла существует функция open, которая открывает файл разными способами. У функции open много параметров, нам пока важны 3 аргумента: первый, это имя файла. Путь к файлу может быть относительным или абсолютным. Второй аргумент, это режим, в котором мы будем открывать файл

Синтаксис следующий:

f = open(file_name, access_mode)

Где,

file_name = имя открываемого файла

access_mode = режим открытия файла

Код и сопроводительные материалы

Пространства имён и области видимости

Изучение области видимости и разберётесь в пространствах имён модулей

Пространство имён (namespace) — это набор связей имён с объектами. В настоящий момент большинство пространств имён реализованы в виде словарей Python, но не стоит заострять на этом внимание (если только по поводу производительности): возможно, в будущем реализация изменится. Примеры пространств имён: набор встроенных имён (функции вроде abs() и имён встроенных исключений); глобальные имена в модуле; локальные имена при вызове функции. Важная вещь, которую необходимо знать о пространствах имён — это то, что нет абсолютно никакой связи между именами в разных пространствах имён: например, два разных модуля могут без проблем определять функцию «maximize», так как пользователи модулей будут использовать имена модулей в качестве префиксов

Сегодня мы будем говорить о важных теоретических основах, которые необходимо понимать и помнить, чтобы писать грамотный, читаемый и красивый код. Мы будем вести речь об областях видимости переменных. Эта статья будет полезна не только новичкам, но и опытным программистам, которые пришли в Python из другого языка и хотят разобраться с его механиками работы

Области видимости определяют, в какой части программы мы можем работать с той или иной переменной, а от каких переменная «скрыта». Крайне важно понимать, как использовать только те значения и переменные, которые нам нужны, и как интерпретатор языка себя при этом ведет. А еще мы посмотрим, как обходить ограничения, накладываемые областями видимости на действия с переменными. В Python существует целых 3 области видимости:

Локальная

Глобальная

Нелокальная

Последняя, нелокальная область видимости, была добавлена в Python 3. Обычно, речь заходит про области видимости, когда происходит знакомство с функциями. На их примере мы и будем рассматривать работу областей видимости переменных

Код и сопроводительные материалы

Стандартные и сторонние библиотеки Python

Библиотеки Python, использование для разных задач

 

Библиотека распознавания и воспроизведения речи, голосовой помощник

На Python можно строить как простые программы, так и сложные ИИ системы. В данном занятии мы покажем, как реализовать распознавание голоса и выполнение различных команд. Подобные занятия можно проводить как отдельные мастер-классы как для новых учеников с достаточным уровнем подготовки, так и проводить в формате занятий для стандартного курса Python

Гибкость и простота использования пакета SpeechRecognition делают его отличным выбором для любого проекта Python. Тем не менее, поддержка каждой функции каждого API, который он включает, не гарантируется. Вам нужно будет потратить некоторое время на изучение доступных вариантов, чтобы выяснить, будет ли SpeechRecognition работать в вашем конкретном случае

Перед стартом работы, вам стоит убедиться в нескольких вещах:

  • у вас установлен Python на вашем компьютере

  • у вас установлен текстовый редактор, к примеру PyCharm

  • у вас установлен пакетный менеджер Pip

 

Установка библиотек

На Python можно строить как простые программы, так и сложные ИИ системы. В данной статье мы покажем как реализовать распознавание голоса и выполнение различных команд

Для распознавания голоса вам необходимо установить библиотеки:

SpeechRecognition - команда pip install SpeechRecognition

pyttsx3  - команда pip install pyttsx3 (или  для второй версии функции talk gTTS - команда pip install gTTS) проверить работу функции talk следует в первой части занятия, дальше не двигаться до тех пор, пока голосовое воспроизведение не заработает тем или иным способом

PyAudio - команда pip install PyAudio

Все библиотеки можно устанавливать через терминал в ваш проект через программу PyCharm

После установки всех библиотек начните прописывать код самой программы.  Ниже мы приведем весь код программы с комментариями, дабы вам было проще в нём разобраться: 

Скачать библиотеку под вашу версию языка и системы можно по данной ссылке:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio
В данном занятии я работала с версией библиотеки PyAudio-0.2.11-cp37-cp37m-win_amd64.whl

Для более простой установки  после скачивания файла,  можно скопировать его в основную папку вашего проекта, затем установить его, запустив код в терминале:

 

pip install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl

 

Задание:

Установить необходимые библиотеки, взять за основу исходный код из данного занятия. Адаптировать скрипт текстового консультанта-помощника для магазина из модуля 1 для голосового помощника. Протестировать скрипт на ком-то из знакомых, доработать диалог

 

Дополнительные материалы:

https://habr.com/ru/company/toshibarus/blog/490732/

https://cyberguru.tech/программирование/машинное-обучение/окончательное-руководство-по-распоз

 

Мастер-класс разработан на основании данного видео-материала:

https://www.youtube.com/watch?v=2eoudIBVW9w

Код и сопроводительные материалы

Классы и объекты

Данный урок посвящен объектно-ориентированному программированию в Python. Разобраны такие темы как создание объектов и классов, работа с конструктором, наследование и полиморфизм в Python

Основные понятия объектно-ориентированного программирования

Объектно-ориентированное программирование (ООП) является методологией разработки программного обеспечения, в основе которой лежит понятие класса и объекта, при этом сама программа создается как некоторая совокупность объектов, которые взаимодействую друг с другом и с внешним миром. Каждый объект является экземпляром некоторого класса. Классы образуют иерархии. Более подробно о понятии ООП можно прочитать на википедии

Выделяют три основных “столпа” ООП:  инкапсуляция, наследование и полиморфизм

Инкапсуляция

Под инкапсуляцией понимается сокрытие деталей реализации, данных и т.п. от внешней стороны. Например, можно определить класс “холодильник”, который будет содержать следующие данные: производитель, объем, количество камер хранения, потребляемая мощность и т.п., и методы: открыть/закрыть холодильник, включить/выключить, но при этом реализация того, как происходит непосредственно включение и выключение пользователю вашего класса не доступна, что позволяет ее менять без опасения, что это может отразиться на использующей класс «холодильник» программе. При этом класс становится новым типом данных в рамках разрабатываемой программы. Можно создавать переменные этого нового типа, такие переменные называются объекты

Наследование

Под наследованием понимается возможность создания нового класса на базе существующего. Наследование предполагает наличие отношения “является” между классом наследником и классом родителем. При этом класс потомок будет содержать те же атрибуты и методы, что и базовый класс, но при этом его можно (и нужно) расширять через добавление новых методов и атрибутов

Примером базового класса, демонстрирующего наследование, можно определить класс “автомобиль”, имеющий атрибуты: масса, мощность двигателя, объем топливного бака и методы: завести и заглушить. У такого класса может быть потомок – “грузовой автомобиль”, он будет содержать те же атрибуты и методы, что и класс “автомобиль”, и дополнительные свойства: количество осей, мощность компрессора и т.п.

Полиморфизм

Полиморфизм позволяет одинаково обращаться с объектами, имеющими однотипный интерфейс, независимо от внутренней реализации объекта. Например, с объектом класса “грузовой автомобиль” можно производить те же операции, что и с объектом класса “автомобиль”, т.к. первый является наследником второго, при этом обратное утверждение неверно (во всяком случае не всегда). Другими словами, полиморфизм предполагает разную реализацию методов с одинаковыми именами. Это очень полезно при наследовании, когда в классе наследнике можно переопределить методы класса родителя

Код и сопроводительные материалы

Наследование классов

Наследование

Наследование – важная составляющая объектно-ориентированного программирования. Так или иначе мы уже сталкивались с ним, ведь объекты наследуют атрибуты своих классов. Однако обычно под наследованием в ООП понимается наличие классов и подклассов. Также их называют супер- или надклассами и классами, а также родительскими и дочерними классами.

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

Простое наследование методов родительского класса

В качестве примера рассмотрим разработку класса столов и его двух подклассов – кухонных и письменных столов. Все столы, независимо от своего типа, имеют длину, ширину и высоту. Пусть для письменных столов важна площадь поверхности, а для кухонных – количество посадочных мест. Общее вынесем в класс, частное – в подклассы.

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

Код и сопроводительные материалы

Эта тема не содержит тестов или других форм контроля знаний