Медиаблог /

Как написать первую программу на Python: от Hello World до игры — пошаговый гайд

9 июля 2026

Как написать первую программу на Python: от Hello World до игры — пошаговый гайд

Python — высокоуровневый язык программирования, созданный Гвидо ван Россумом. Синтаксис здесь читается почти как обычный английский текст, а первая программа на Python умещается в одну строку: print("Hello, World!"). С неё начинали миллионы разработчиков — и вы начнёте сегодня.

Начинающий программист пишет первую программу на Python за ноутбуком

В этом гайде — 10 шагов от установки до рабочей консольной игры, два проекта с полным кодом (калькулятор и игра «Угадай число») и разбор графического интерфейса на Tkinter. Знать математику «выше школьной» и уметь программировать заранее не нужно. Процедурного стиля вполне хватает для 80% задач — ООП (объектно-ориентированное программирование) подождёт.

image

Не знаете, с чего ребёнку начать в IT?

Дайте попробовать разные направления: Python, веб-разработку и робототехнику

Смотреть программу

Хотите пройти путь от print(«Hello, World!») до реального проекта с наставником? На курсе «Программирование: Уверенный старт» за 36 часов школьники осваивают Python, HTML/CSS/JS, Flask и Arduino — и создают четыре рабочих проекта в портфолио. Стоимость — 0 ₽. Узнайте подробнее на странице курса.

Что понадобится перед первым запуском

Три вещи: интерпретатор Python 3.x, удобная среда разработки и файл с расширением .py. Всё это бесплатно, а настройка займёт 5–10 минут. Дальше — только код.

Инфографика — 10 шагов к первой программе на Python для начинающих

Шаг 1. Установить Python с официального сайта

Открывайте python.org → раздел Downloads → скачивайте свежую версию Python 3.x. На Windows во время установки обязательно поставьте галочку «Add Python to PATH» — без неё терминал не найдёт интерпретатор, и придётся переустанавливать.

После установки проверьте:

# Windows

python —version

# macOS и Linux

python3 —version

Если в ответ появилась версия — всё готово. Теперь создайте текстовый файл, назовите его, например, hello.py (расширение .py обязательно) и запустите через терминал:

python hello.py

Именно так работает любой Python-скрипт: интерпретатор читает файл сверху вниз, строка за строкой, и сразу выполняет команды — без предварительной компиляции, как в C++ или Java.

Шаг 2. Выбрать среду разработки: Thonny, VS Code или PyCharm

Писать код можно и в обычном блокноте, но среда разработки — IDE (Integrated Development Environment, интегрированная среда разработки) — подсвечивает синтаксис, ловит опечатки и запускает скрипты в один клик.

Среда
Для кого
Сложность setup
Ключевые возможности
Thonny Абсолютные новички Минимальная Встроенный отладчик, пошаговое выполнение, поставляется вместе с Python
VS Code Универсалы Средняя Расширение Pylance, встроенный терминал, бесплатный
PyCharm Community Продвинутые Выше средней Умное автодополнение, рефакторинг, интеграция с Git

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

Не хотите ничего устанавливать — используйте онлайн-компилятор (replit.com или programiz.com). Python запускается прямо в браузере: удобно, чтобы познакомиться с синтаксисом, но для реальных проектов нужна локальная установка.

Пошаговая инструкция: 10 шагов к рабочей программе

Каждый следующий шаг добавляет одну новую концепцию. Примеры кода рабочие — копируйте, запускайте, меняйте под себя.

Главное правило синтаксиса: в Python вместо фигурных скобок {} — отступы. Стандарт PEP 8 (разработанный самим Гвидо ван Россумом) требует 4 пробела для каждого уровня вложенности. Поставьте неверный отступ — получите IndentationError.

Шаг 3. Написать и запустить Hello, World!

Создайте файл hello.py и напишите одну строку:

print(«Hello, World!»)

Запустите: python hello.py. В терминале появится:

Hello, World!

Вот и вся первая программа на Python. Для сравнения: в Java та же задача — 4 строки, в C++ — 5 строк с подключением библиотеки. Именно низкий порог входа делает Python лучшим первым языком.

print() — встроенная функция. Она принимает любое количество аргументов и выводит их в консоль. Два полезных параметра:

  • sep — разделитель между аргументами (по умолчанию пробел);
  • end — что поставить в конце (по умолчанию перевод строки).

print(«Python», «3.12», sep=»-«) # Python-3.12

print(«Шаг 1″, end=» → «)

print(«Шаг 2») # Шаг 1 → Шаг 2

Сама функция возвращает None — ничего не сохраняет, только выводит.

Шаг 4. Переменные, ввод данных и f-строки

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

name = «Алёша» # str

age = 16 # int

height = 1.75 # float

Для ввода с клавиатуры — функция input(). Запомните критическое правило: input() всегда возвращает строку str, даже если пользователь ввёл цифру. Частая ловушка:

age = input(«Сколько лет? «)

print(age + 5) # TypeError: can only concatenate str (not «int») to str

Для работы с числами нужно явное преобразование:

age = int(input(«Сколько лет? «))

print(age + 5) # работает

Для форматирования вывода используйте f-строки (доступны с Python 3.6+):

name = «Алёша»

age = 16

print(f»Привет, {name}! Тебе {age} лет.»)

F-строки читабельнее конкатенации через + и поддерживают выражения прямо внутри фигурных скобок: f»{2 * age}».

Шаг 5. Условные операторы if/elif/else

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

age = int(input(«Возраст: «))

if age < 12:

print(«Начальная школа»)

elif age < 18:

print(«Старшая школа»)

else:

print(«Взрослый»)

Логические операторы пишутся словами: and, or, not — в отличие от && и || в Java или C++.

Популярная ловушка при написании программ на Python:

# Неправильно — всегда True, потому что 2 — непустой объект

if code == 1 or 2:

# Правильно

if code in [1, 2, 3]:

Оператор in проверяет наличие элемента в списке, строке или словаре — и делает код куда читабельнее цепочки or.

Шаг 6. Циклы for и while — автоматизируем повторения

Цикл for с функцией range():

for i in range(1, 6): # от 1 до 5, правая граница НЕ включается

print(i)

Частая ошибка: range(1, 6) выдаёт 1, 2, 3, 4, 5 — но не 6. Итерация по списку — «из коробки»:

fruits = [«яблоко», «груша», «слива»]

for fruit in fruits:

print(fruit)

Цикл while — когда количество итераций заранее неизвестно. Паттерн while True: + break незаменим для меню и игровых сессий:

while True:

answer = input(«Продолжить? (да/нет): «)

if answer == «нет»:

break

print(«Продолжаем!»)

break завершает цикл полностью. continue пропускает текущую итерацию и переходит к следующей. Если скрипт «завис» в бесконечном цикле — нажмите Ctrl+C: это вызовет KeyboardInterrupt и остановит выполнение.

Шаг 7. Списки и словари — хранение наборов данных

Список [] — изменяемая последовательность с нулевой индексацией:

scores = [85, 92, 78, 91]

scores.append(100) # добавить в конец

scores.pop() # удалить последний

scores.sort() # сортировка на месте

print(scores[0]) # первый элемент

Словарь {} — структура «ключ: значение», реализованная через хеш-таблицу:

student = {«name»: «Алёша», «age»: 16, «grade»: «10А»}

print(student[«name»]) # Алёша

print(student.get(«email», «не указан»)) # не указан

Метод .get(key, default) безопаснее прямого обращения через []: при отсутствии ключа вернёт значение по умолчанию, а не KeyError.

Контейнер
Синтаксис
Изменяемый
Применение
Список [1, 2, 3] Да Упорядоченные наборы, очереди
Словарь {«k»: «v»} Да Ключ → значение, настройки
Кортеж (1, 2, 3) Нет Координаты, константы
Множество {1, 2, 3} Да Уникальные элементы, проверка вхождения

Шаг 8. Функции def — избавляемся от дублирования кода

Функция объявляется через def, тело — с отступом:

def greet(name: str, formal: bool = False) -> str:

if formal:

return f»Добрый день, {name}!»

return f»Привет, {name}!»

print(greet(«Алёша»))

print(greet(«Андрей Иванович», formal=True))

Обратите внимание на Type Hinting (подсказки типов, доступны с Python 3.5+): name: str и -> str говорят IDE, какой тип ожидается на входе и выходе. Код работает и без них, но с ними IDE подсветит несоответствие ещё до запуска.

Три вещи о функциях, которые сбивают новичков:

  1. return немедленно завершает функцию и передаёт значение вызывающему коду.
  2. Функция без return возвращает None. Ловушка: x = func_with_print() — теперь x это None, а не результат вычислений.
  3. Переменные внутри функции локальные — снаружи их не видно. Вместо global лучше передавать данные через return.

PEP 8 рекомендует называть функции и переменные в стиле snake_case: calculate_average, а не calculateAverage.

Шаг 9. Стандартные модули: random, math, time

Python поставляется с богатой стандартной библиотекой — философия «Batteries Included» («батарейки в комплекте»). Для старта pip install не нужен — всё уже есть:

import random

import math

import time

# random

secret = random.randint(1, 100) # обе границы включены — в отличие от range()!

card = random.choice([«♠», «♥», «♦», «♣»])

# math

print(math.sqrt(144)) # 12.0

print(math.pi) # 3.141592…

print(math.ceil(4.2)) # 5

# time

time.sleep(1) # пауза 1 секунда — полезно в парсерах, чтобы не нагружать сервер

Три варианта импорта:

import math # math.sqrt() — явно, откуда функция

from math import sqrt # sqrt() — короче, но менее явно

import random as rnd # rnd.randint() — псевдоним для длинных имён

Шаг 10. Обработка ошибок: try/except без паники

Без обработки ошибок программа «падает» на первой же некорректной операции — пользователь видит трейсбэк (стек вызовов), а несохранённые данные теряются.

while True:

try:

number = int(input(«Введите число: «))

print(f»Вы ввели: {number}»)

break

except ValueError:

print(«Это не число, попробуйте снова»)

Всегда указывайте конкретный тип исключения: ValueError, ZeroDivisionError, KeyError, IndexError. Антипаттерн — bare except без типа:

# Плохо — никогда так не делайте

try:

result = 10 / 0

except:

pass # перехватывает ВСЁ, включая Ctrl+C и системные сигналы

bare except скрывает реальные баги и делает программу «неубиваемой» даже когда её нужно остановить. Правило: except ValueError: или except (KeyError, IndexError): — всегда конкретно.

Ребенок хочет изучать программирование? Пусть начнёт с реальных проектов

На курсе школьники создают Telegram-бота, сайт и веб-приложение

  • Бесплатно — 0 ₽ за обучение
  • Портфолио — 4 готовых проекта
  • 7–11 классы — Онлайн, с нуля
Оставить заявку
image

Первый проект — консольный калькулятор

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

Базовая версия (шаги 3–5):

a = float(input(«Первое число: «))

b = float(input(«Второе число: «))

op = input(«Операция (+, -, *, /): «)

if op == «+»:

print(a + b)

elif op == «-«:

print(a — b)

elif op == «*»:

print(a * b)

elif op == «/»:

print(a / b)

else:

print(«Неизвестная операция»)

Полная версия с циклом и защитой (шаги 6, 8, 10):

def calculate(a: float, b: float, op: str) -> str:

if op == «+»:

return str(a + b)

elif op == «-«:

return str(a — b)

elif op == «*»:

return str(a * b)

elif op == «/»:

if b == 0:

return «Ошибка: деление на ноль»

return str(a / b)

elif op == «**»:

return str(a ** b) # ** — возведение в степень

return «Неизвестная операция»

while True:

try:

a = float(input(«Первое число: «))

b = float(input(«Второе число: «))

op = input(«Операция (+, -, *, /, **): «)

print(«Результат:», calculate(a, b, op))

except ValueError:

print(«Введите числа, а не текст»)

again = input(«Ещё раз? (да/нет): «)

if again.lower() != «да»:

break

Что здесь использовано: float() для дробных чисел (шаг 4), if/elif/else для выбора операции (шаг 5), while True + break для повтора (шаг 6), def + return для вынесения логики в функцию (шаг 8), try/except ValueError для защиты ввода (шаг 10). Оператор ** возводит первое число в степень второго.

Финальный проект — игра «Угадай число»

Блок-схема игры «Угадай число» на Python — цикл while и ветки if

Этот проект собирает в одном месте все концепции шагов 1–10: модуль random, цикл while, блок try/except, ветки if/elif, функцию def и счётчик попыток. Уровень — средний, но после калькулятора всё будет понятно.

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

import random

def start_game() -> None:

secret = random.randint(1, 100) # обе границы включены

attempts = 0

print(«Загадал число от 1 до 100. Угадай!»)

while True:

user_input = input(«Твоё число (или ‘exit’ для выхода): «)

if user_input.lower() == «exit»:

print(f»Сдался! Загаданное число было {secret}.»)

break

try:

guess = int(user_input)

except ValueError:

print(«Введи целое число, не текст.»)

continue # не засчитывать некорректную попытку

attempts += 1

if guess < secret:

print(«Больше!»)

elif guess > secret:

print(«Меньше!»)

else:

print(f»Верно! Ты угадал за {attempts} попыток.»)

break

if __name__ == «__main__»:

start_game()

Разбор ключевых решений:

  • random.randint(1, 100) — обе границы включены, в отличие от range() (шаг 9).
  • continue после ValueError — некорректный ввод не увеличивает счётчик попыток (шаг 10).
  • user_input.lower() == «exit» — пасхалка: игрок может сдаться в любой момент.
  • if __name__ == «__main__»: — при прямом запуске python game.py переменная __name__ равна «__main__», код выполняется. При импорте import game в другой файл — игра не запустится автоматически. Паттерн позволяет использовать файл одновременно как скрипт и как модуль.

Как расширить игру: лимит попыток и рекорд в файл

Три идеи для самостоятельной доработки.

Лимит попыток. Добавьте константу MAX_ATTEMPTS = 7 и условие выхода внутри цикла — если attempts >= MAX_ATTEMPTS, игра завершается поражением.

Рекорд в файл. Контекстный менеджер with гарантирует закрытие файла даже при ошибке:

with open(«record.txt», «w») as f:

f.write(str(attempts))

Уровни сложности. Внешний while True: с меню перед вызовом start_game(): 1 — диапазон 1–50, 2 — 1–100, 3 — 1–1000. Передавайте диапазон параметром в функцию.

Графический интерфейс: первое приложение на Tkinter

Tkinter входит в стандартную установку Python — pip install не нужен. Это означает, что после установки интерпретатора с python.org графический интерфейс доступен сразу.

import tkinter as tk

from tkinter import messagebox

Минимальное окно:

window = tk.Tk()

window.title(«Мой первый GUI»)

window.geometry(«400×300″)

label = tk.Label(window, text=»Привет, мир!»)

label.pack()

window.mainloop() # запускает цикл событий — без этого окно закроется мгновенно

Цепочка для любого приложения: tk.Tk() → создать виджеты (Label, Entry, Button, OptionMenu) → разместить через менеджер геометрии .pack() / .grid() / .place() → window.mainloop().

Простой кликер с таймером:

import time

count = 0

start = time.time()

def click():

global count

count += 1

label.config(text=f»Кликов: {count}»)

def tick():

label_timer.config(text=f»Секунд: {int(time.time() — start)}»)

window.after(1000, tick) # вызвать tick снова через 1000 мс

window = tk.Tk()

label = tk.Label(window, text=»Кликов: 0″, font=(«Arial», 24))

label.pack(pady=20)

label_timer = tk.Label(window, text=»Секунд: 0″)

label_timer.pack()

btn = tk.Button(window, text=»Кликни!», command=click)

btn.pack(pady=10)

tick()

window.mainloop()

window.after(1000, callback) — неблокирующий таймер: вызывает функцию через указанное количество миллисекунд, не «замораживая» интерфейс.

Tkinter достаточен для учебных проектов и простых инструментов. Для более современного вида — PyQt или customtkinter, но это уже следующий уровень.

Куда двигаться после первой программы

Написать программу на Python и сразу осваивать ООП — не одно и то же. Процедурного стиля хватает для большинства реальных задач: парсеры сайтов, Telegram-боты, автоматизация таблиц, управление устройствами на Raspberry Pi — всё это строится без единого класса.

К ООП стоит переходить, когда:

  • проект вырос до 100+ строк с повторяющимися структурами данных;
  • над кодом работает команда — нужна чёткая граница ответственности;
  • создаётся библиотека или фреймворк.

Направления после консольных программ:

  • Веб — Flask: познакомитесь с HTTP-запросами, шаблонами Jinja2, базами данных SQLite.
  • Автоматизация — библиотека requests + BeautifulSoup: парсинг сайтов; openpyxl: работа с Excel без мыши.
  • Боты — python-telegram-bot или aiogram: рабочий Telegram-бот за несколько часов.
  • Железо — Arduino и Raspberry Pi: физические устройства, управляемые скриптом на Python.

Часто задаваемые вопросы

Что такое Python — это язык или программа?

Python — высокоуровневый язык программирования общего назначения, созданный Гвидо ван Россумом. Для запуска кода нужен отдельный интерпретатор — программа, которая читает .py-файл и выполняет его построчно. Скачать официальный интерпретатор можно на python.org.

Что означает расширение .py?

.py — стандартное расширение текстовых файлов с кодом Python. Запуск: python filename.py в терминале. Интерпретатор читает файл сверху вниз, без предварительной компиляции — в отличие от C++ или Java.

Можно ли писать на Python без установки?

Да — онлайн-компиляторы (replit.com, programiz.com) запускают Python прямо в браузере. Ограничения: нет доступа к файловой системе, часть модулей недоступна. Для знакомства с синтаксисом подходит, для реальных проектов нужна локальная установка.

Почему input() всегда возвращает строку, а не число?

input() возвращает str — это фундаментальное правило языка. Даже если пользователь ввёл «25», переменная хранит строку «25». Для арифметики — явное преобразование: age = int(input(«Возраст: «)). При нечисловом символе возникнет ValueError — перехватывайте через try/except ValueError:.

Зачем нужны f-строки, если есть конкатенация через «+»?

F-строки читабельнее: f»Привет, {name}!» против «Привет, » + name + «!». Поддерживают выражения внутри фигурных скобок: f»{2 + 2}» → «4», форматирование чисел: f»{price:.2f}». Конкатенация через + требует явного str() при смешивании типов — типичная ошибка новичков.

Что такое PEP 8 и обязательно ли его соблюдать?

PEP 8 — официальный стандарт оформления кода Python, разработанный Гвидо ван Россумом. Ключевые правила: 4 пробела для отступов, имена переменных в snake_case. Формально не обязателен, но IDE и линтеры (flake8, pylint) проверяют соответствие автоматически — и код становится читаемее для всех.

Почему нельзя писать except: без указания типа ошибки?

bare except перехватывает всё — включая KeyboardInterrupt (Ctrl+C) и SystemExit. Программа становится «неубиваемой», а реальные баги скрываются. Правило: всегда указывайте конкретный тип — except ValueError: или except (KeyError, IndexError):.

Когда переходить с процедурного стиля на ООП?

Процедурного стиля достаточно для 80% задач: парсеры, боты, скрипты автоматизации. Переходить к ООП стоит, когда проект вырос до 100+ строк с повторяющимися структурами данных, ведётся командная разработка или создаётся библиотека.

Что делает конструкция if __name__ == «__main__»:?

При прямом запуске python game.py переменная __name__ равна «__main__» — код внутри выполняется. При импорте import game в другой файл — не выполняется автоматически. Паттерн позволяет использовать файл одновременно как скрипт и как модуль.

Как запустить Python-скрипт в Windows, если команда не найдена?

Три способа: (1) в командной строке — cd папка_с_файлом → python script.py; (2) из IDE — кнопка Run или Shift+F10 в PyCharm; (3) двойной клик на .py-файл, если Python установлен с галочкой «Add Python to PATH». Если python не найден — переустановите Python с этой галочкой.

Пусть ребёнок сделает первый IT-проект уже в этом месяце

Бесплатный онлайн-курс с понятной программой, поддержкой и проектами для портфолио

  • Онлайн
  • 4 недели
  • Бесплатно
  • Школьникам 7–11 классов
Подать заявку
icon