Первая программа. Среда разработки IDLE
Сегодня мы напишем свою первую программу в среде разработки IDLE.
После загрузки и установки python открываем IDLE (среда разработки на языке Python, поставляемая вместе с дистрибутивом).
Здесь и далее буду приводить примеры под ОС Windows, так как именно она у меня сейчас под рукой.
Запускаем IDLE (изначально запускается в интерактивном режиме), после чего уже можно начинать писать первую программу. Традиционно, первой программой у нас будет «hello world».
Чтобы написать «hello world» на python, достаточно всего одной строки:
Вводим этот код в IDLE и нажимаем Enter. Результат виден на картинке:
Поздравляю! Вы написали свою первую программу на python! (если что-то не работает).
С интерактивным режимом мы немного познакомились, можете с ним ещё поиграться, например, написать
Но, всё-таки, интерактивный режим не будет являться основным. В основном, вы будете сохранять программный код в файл и запускать уже файл.
Для того, чтобы создать новое окно, в интерактивном режиме IDLE выберите File → New File (или нажмите Ctrl + N).
В открывшемся окне введите следующий код:
Первая строка печатает вопрос ("Как Вас зовут? "), ожидает, пока вы не напечатаете что-нибудь и не нажмёте Enter и сохраняет введённое значение в переменной name.
Во второй строке мы используем функцию print для вывода текста на экран, в данном случае для вывода «Привет, » и того, что хранится в переменной «name».
Теперь нажмём F5 (или выберем в меню IDLE Run → Run Module) и убедимся, что то, что мы написали, работает. Перед запуском IDLE предложит нам сохранить файл. Сохраним туда, куда вам будет удобно, после чего программа запустится.
Вы должны увидеть что-то наподобие этого (на скриншоте слева — файл с написанной вами программой, справа — результат её работы):
Поздравляю! Вы научились писать простейшие программы, а также познакомились со средой разработки IDLE. Теперь можно немного отдохнуть, а потом начать изучать python дальше. Можете посмотреть синтаксис python, циклы или условия. Желаю удачи!
Для вставки кода на Python в комментарий заключайте его в теги
Как написать программу на Python
В прошлой статье я рассказал как установить Python и среду разработки PyCharm. В этой статье поговорим о том, как написать программу на Python.
Что для этого нужно?
Для того, чтобы написать программу на любом языке программирования нужно знать, что мы хотим сделать.
Давайте для начала напишем самую простую программу, которая просто выводит сообщение в консоль. По традиции, этим сообщением является "Hello world!".
Функция print
Функция print() выводит сообщение в консоль. В скобках в качестве параметра передается сообщение и/или переменные.
1. Создаем файл с расширением .py
2. Пишем в нем строку
Если мы запустим этот файл двойным нажатием левой кнопкой мыши, то он быстро закроется, и мы не успеем разглядеть наше сообщение.
Для того, чтобы этого не происходило добавим функцию input()
Функция input
Функция input() предназначена для считывания данных с клавиатуры. В скобках передается сообщение, которое будет выведено в консоль.
Добавим в конце нашей программы input("Нажмите enter для продолжения. "), и тогда наша программа не закроется. Код будет выглядеть так:
print("Hello World!")
input("Нажмите enter для продолжения. ")
Я не буду писать программу, а запущу Python из командной строки, чтобы показать вам, что всё работает.
Заключение
1. Для того, чтобы написать программу на Python, нужно сформулировать, что мы хотим сделать (в нашем примере мы захотели вывести сообщение "hello world" в консоль)
2. Нужно знать синтаксис языка программирования Python (благо, он не такой сложный, в отличии от некоторых других языков программирования)
Чтобы изучать программирование на языке Python было проще, специально для вас я создал ютуб-канал "Русский питонист", на котором уже опубликовал плейлист по основам Python.
Пишем приложение на Python для подготовки к собеседованиям по Python
На конец 2023 года язык программирования Python является самым популярным по индексу TIOBE. Что касается работы, то по количеству вакансий в мире язык Python занимает второе место (после JavaScript/TypeScript). Поэтому у соискателей на должность, где требуется Python, возникает потребность подготовки к собеседованиям.
В этой статье я расскажу о том, как используя Python, можно написать desktop-приложение для ОС Windows, которое поможет быстро, эффективно и абсолютно бесплатно подготовиться к собеседованиям по Python.
Для кого это приложение и какие вопросы будут затронуты
Вы можете подавать резюме на любую профессию, где требуется Python: бекенд-разработчик, аналитик данных, тестировщик, специалист по Data Science или машинному обучению, но в любом случае вы должны обладать необходимой фундаментальной базой. В этом приложении я аккумулировал все возможные вопросы – как вопросы с реальных собеседований (реальные кейсы), так и вопросы, которые, как говорится, вы должны “must know”. Все эти вопросы я разбил на 7 тематических групп:
- Базовый синтаксис Python (217 вопросов)
- Объектно-ориентированное программирование (ООП) (110 вопросов)
- Правила оформления кода (PEP8, PEP257) (27 вопросов)
- Структуры данных на Python (69 вопросов)
- Алгоритмы на Python (39 вопросов)
- Git (64 вопроса)
- Базы данных и SQL запросы (58 вопросов)
В этом приложении нет фреймворков типа Django или специализированных библиотек типа NumPy. Если интервьюер поймет, что у вас нет фундаментальной базы, то он не будет спрашивать про фреймворки, а собеседование очень быстро закончится.
Также в этом приложении нет задач с LeetCode. В последнее время среди кандидатов осуществляется практика заучивать алгоритмы решения задач на LeetCode, поэтому интервьюеры начали придумывать свои задачи (которые позже попадают на опять же LeetCode).
Тем не менее, в приложении есть классические олимпиадные задачи на основные алгоритмы, но их мало. Уметь решать эти задачи – это своего рода правила хорошего тона в программировании.
Актуальность вопросов
При формировании списка вопросов я старался максимально актуализировать их содержание в соответствии с последними изменениями в синтаксисе языка. Например, существует вопрос про конструкцию match/case, которая появилась не так давно - в Python 3.10.
И наоборот, здесь отсутствуют устаревшие конструкции. Например, кто помнит о функции format() при работе со строками? Когда появились f-строки, о функции format() все забыли, поэтому её здесь и нет. А f-строки есть.
Придумываем функционал приложения
Грубо говоря, функционал приложения – это то, что оно умеет делать. А умеет делать оно следующее: создавать пользователей, вести их статистику (на сколько вопросов они ответили верно, сколько времени они провели на собеседованиях), загружать csv-файлы с вопросами, гибко настраивать собеседования, озвучивать вопросы.
Довольно много получается, поэтому оптимальным вариантом будет использовать парадигму объектно-ориентированного программирования (ООП), но помимо классов и экземпляров будет много-много вспомогательных функций.
Для реализации приложения я использовал самую последнюю версию интерпретатора Python на момент написания статьи – Python 3.12.
Создаем графический интерфейс
Не знаю, как другие разработчики, но мне всегда сначала хочется написать графический интерфейс. И начинаю я с блокнота. Не того, что notepad.exe, а с обычного реального блокнота для рисунков. Вот, что я нарисовал на самом раннем этапе разработки:
Теперь надо выбрать библиотеку для Python, в которой можно создать графический интерфейс. В Python есть встроенный модуль tkinter. Но если его использовать, то ваше приложении будет похоже на приложения времен Windows 95. Поэтому мы используем что-то современное – стороннюю библиотеку customtkinter. Но почему же не PyQt? Помните принцип KISS? Keep it simple, stupid! Для простого проекта я буду использовать более простые технологии.
Вот что получилось.
Пользователи, управление пользователями
Из всех возможных способов реализации управления юзерами в приложении самым оптимальным является создание базы данных. Можно использовать стандартную библиотеку Python sqlite3, но тогда будем писать чистые SQL-запросы в базу данных, а я не хочу. Поэтому давайте используем какую-нибудь популярную ORM. Я выбрал SQLAlchemy. Вот так будет выглядеть код для создания базы данных пользователей:
import os from typing import Type from sqlalchemy import create_engine from sqlalchemy import DateTime, Integer, JSON, String from sqlalchemy import MetaData from sqlalchemy.orm import DeclarativeBase from sqlalchemy.orm import Mapped from sqlalchemy.orm import mapped_column from settings import DATABASE_NAME engine = create_engine(f'sqlite:///', echo=False) metadata = MetaData() class Base(DeclarativeBase): pass class User(Base): """A class representing user's data in the app. Attributes: __tablename__ (str): The name of the table in the database. id: The unique identifier of the user. user_name: The name of the user. last_enter_date: The date and time of the user's last login. interviews_duration: The total duration of interviews for the user in seconds. progress: The user's progress data stored in JSON format. """ __tablename__ = 'users' id: Mapped[int] = mapped_column(primary_key=True) user_name: Mapped[str] = mapped_column(String(25)) last_enter_date: Mapped[Type] = mapped_column(DateTime, nullable=True) interviews_duration: Mapped[int] = mapped_column(Integer) progress: Mapped[Type] = mapped_column(JSON) def create_db() -> None: """Creates database as a SQLite-file""" if not _is_db_created(): Base.metadata.create_all(engine) def _is_db_created() -> bool: """Checks DB existence in the root folder.""" return os.path.exists(f'./')
Как видно из кода, у нас есть удобный инструмент для хранения прогресса пользователя – формат JSON, а также инструмент для работы с датами и временем DateTime.
Небольшое замечание: с помощью SQLAlchemy также можно работать с базой данных через чистые SQL-запросы.
В приложении мы будем использовать файловую СУБД SQLite – это, пожалуй, самый лучший, если не единственный вариант в данном случае.
Решаем вопрос со списком вопросов
Особого смысла загружать в базу данных список вопросов я не вижу. А что, если у нас список вопросов будет храниться в каком-нибудь файле, который можно будет очень легко править с помощью Microsoft Excel или Google Таблиц. Существует такой текстовый формат CSV, предназначенный для представления табличных данных. Его мы и будем использовать для хранения вопросов. Хорошей новостью является то, что в Python существует инструмент для работы с CSV – одноименная стандартная библиотека. Мы через менеджера контекста открываем файл и переводим данные CSV-файла в битовый поток, и десериализуем этот поток в список кортежей Python.
Имитируем голос интервьюера
Наше приложение может воспроизводить голосом задаваемые вопросы. Эта технология называется TTS (text-to-speech). В Python существует сторонняя библиотека pyttsx3. Проблема в том, что при выполнении чтения текста у нас приложение будет «заморожено» на время воспроизведения. Поэтому давайте переложим выполнение чтения текста на другой поток центрального процессора. Для этого использует стандартную библиотеку threading.
Логика приложения
На данный момент не существует технологии, когда люди что-то наговаривают в микрофон, а нейросеть оценивает, насколько правильно и развернуто они ответили. Тот, кто реализует такую возможность станет миллиардером.
В нашем случае приложение вам задает вопрос, а вы будете, во-первых, учиться слушать вопрос, а, во-вторых учиться отвечать на него, после чего нажмете кнопки «Я правильно ответил на вопрос» и «Я не знаю, следующий вопрос». Но, что если у вас есть сомнений относительно правильности ответа?
Для этого существует третья кнопка – «Посмотреть ответ на вопрос». Нажав на нее, у вас в новом окне появится ответ на вопрос и вы можете посмотреть правильно ли вы ответили или нет.
Что можно было сделать лучше
В первую очередь я жалею, что не стал вести разработку через тестирование (англ. test-driven development, TDD). Когда я добавлял новые функции, меня не покидало ощущение, что все ранее созданное сломалось, а запустить pytest или unittest я не могу.
Я также не стал писать «стильный, модный и молодежный» код с использованием библиотеки dataclasses и тамошними декораторами. Поэтому я написал самый обычный код по старинке.
Ну и еще один момент: вы помните, что классы должны быть закрыты для модификации (Open-Closed Principle). Надо было бы сделать все атрибуты приватными и тонко настроить их поведение через геттеры и сеттеры, создав объекты-свойства с помощью декоратора @property. А еще определить коллекцию __slots__ для каждого класса.
Что в итоге получилось
Там же вы найдете ссылки на скачивание EXE-версии программы.
А можно на видео показать, как пользоваться приложением
Покажу и расскажу. Вот видео на YouTube. Всем спасибо, всем пока.
Урок 6. Как запускать Python программы
В прошлом уроке мы запустили свою первую программу на Python, она вывела фразу "Hello, World!". И эту программу мы запустили с помощью PyCharm.
Однако это не единственный способ выполнять Python-скрипты. Рассмотрим еще несколько вариантов.
И первый — это запуск программ из командной строки. Введем в строке поиска введем cmd и кликнем по найденной программе. Появилось черное окно — это командная строка. Мы уже запускали её ранее, когда проверяли установлен ли Python.
И командная строка — это такое место, где вы можете вводить разные команды, а также названия программ и они будут выполнятся. Программистам часто приходится иметь дело с командными строками, терминалами и другими похожими оболочками.
Чтобы в командной строке запустить Python-программу нужно сперва перейти в каталог, где эта программа расположена.
По умолчанию после открытия терминала мы находимся в домашней папке активного Windows-пользователя. И так как все наши проекты хранятся в каталоге PycharmProjects, то нужно ввести:
cd PycharmProjects
cd — это команда для смены текущего каталога. Сокращение от Change dir. Нажмем Enter. И мы в каталоге с проектами. Теперь перейдем непосредственно в наш проект. Снова ведем команду cd после которой укажем имя проекта (sepython):
cd sepyhton
Нажму Enter. Командная строка вывела, что системе не удается найти указанный путь. Если вы видите такую же надпись, то причин может быть две:
Первая — это опечатка в имени файла или каталога. Это самая распространенная ошибка, внимательно проверьте то, что набрали.
Вторая причина может заключаться в том, что в данном каталоге просто нет папки SEPython. Возможно вы создали её в другом месте.
Чтобы проверить какие файлы или каталоги есть в текущей директории, надо набрать команду dir.
Чтобы минимизировать опечатки, можно пойти на небольшую хитрость и не вводить имя каталога вручную, а воспользоваться автоподстановкой командной строки.
Для этого надо снова ввести команду cd, за ней пробел, а после написать se и нажать клавишу Tab. Командная строка сама дополнит имя каталога до правильного. После чего нужно снова нажать Enter и нас сразу переместит в каталог с проектом.
Если мы еще раз выполним комунд dir, то увидим каталоги Lessons и Tasks, а также файл main.py.
Что ж, нам надо запустить нашу программу hello_world.py, а она находится в папке Lessons. Перейдем в неё:
cd Lessons
Теперь надо запустить hello_world.py и для этого надо сперва написать python, а затем через пробел имя программы hello_world.py:
python hello_world.py
Обратите внимание, что я набираю имя программы, ровно так как его записал в прошлом уроке. Все символы строчные, между словами стоит подчеркивание, а не пробел.
Что ж, нажму Enter! Программа вывела фразу "Hello, world! Отлично, у нас всё получилось.
Теперь давайте рассмотрим несколько распространенных ошибок, которые у вас могут возникнуть на данном этапе. Первая — это снова опечатка. Если поменять два последних символа местами и снова попробовать запустить программу, то мы увидим ошибку, что файл hello_world.yp не найден в текущем каталоге. Когда вы видите такую ошибку, то это повод проверить имя файла, а также его реальное присутствие в данной директории.
В целом с hello_world мы закончили, и осовная проблема данной прогарммы в том, что она всегда будет выводить фразу, которую мы задали внутри программы, а это делает код абсолютно бесполезным. Другое дело hello_user.py, которую я добавил самостоятельно (у вас этой программы пока нет).
Сейчас я покажу как она работает, а в следующем уроке покажу и объясню её исходный код. То есть то, что находится внутри скрипта.
Итак давайте введем:
python hello_user.py
Программа вывела что-то непонятное. На самом деле она завершилась с ошибкой. Дело в том, что скрипт hello_user.py нужно запускать с передачей аргументов или другими словами с передачей дополнительных параметров.
Это значит, что нужно писать python hello_user.py плюс еще какой-то текст, например такой:
python hello_user.py Nikita
В этом случае слово Nikita — это аргумент командной строки, который при запуске будет отправлен в программу hello_user.py.
То есть сейчас в строке три элемента: сам python, имя программы hello_user.py и аргумент командной строки Niktia.
Python запустит программу hello_user.py и передаст в неё слово Nikita. Программа в свою очередь примет это слово и что-то с ним сделает. Давайте посмотрим, что именно, нажмем Enter..
Скрипт отработал без ошибок и поздоровался с нами: "Hello Nikita. Отлично.
Если при запуске передать другой параметр, например Nikita заменить Alena, то скрипт поздоровается с Аленой:
python hello_user.py Alena
То есть теперь программа не просто работает, а она уже умеет каким-то элементарным способом обрабатывать входящие данные и выводить различные результаты в зависимости от этих данных.
В этом курсе, при решении задач, вам часто придется писать подобные программы, которые умеют принимать и обрабатывать входящие данные. И как это правильно сделать мы разберем в следующем уроке.
Следующий урок
Урок 7. Запуск программ с одним аргументом
В этом уроке вы узнаете как писать python-программы, которые принимают аргументы командой строки, а также о том, как из запускать.
Посмотреть
Полный курс с практикой
- 148 уроков
- 322 задания
- Сертификат
- Поддержка преподавателя
- Доступ к курсу навсегда
- Можно в рассрочку