Python — высокоуровневый язык программирования, созданный Гвидо ван Россумом. Синтаксис здесь читается почти как обычный английский текст, а первая программа на Python умещается в одну строку: print("Hello, World!"). С неё начинали миллионы разработчиков — и вы начнёте сегодня.
В этом гайде — 10 шагов от установки до рабочей консольной игры, два проекта с полным кодом (калькулятор и игра «Угадай число») и разбор графического интерфейса на Tkinter. Знать математику «выше школьной» и уметь программировать заранее не нужно. Процедурного стиля вполне хватает для 80% задач — ООП (объектно-ориентированное программирование) подождёт.
Не знаете, с чего ребёнку начать в IT?
Дайте попробовать разные направления: Python, веб-разработку и робототехнику
Хотите пройти путь от print(«Hello, World!») до реального проекта с наставником? На курсе «Программирование: Уверенный старт» за 36 часов школьники осваивают Python, HTML/CSS/JS, Flask и Arduino — и создают четыре рабочих проекта в портфолио. Стоимость — 0 ₽. Узнайте подробнее на странице курса.
Три вещи: интерпретатор Python 3.x, удобная среда разработки и файл с расширением .py. Всё это бесплатно, а настройка займёт 5–10 минут. Дальше — только код.

Открывайте 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.
Писать код можно и в обычном блокноте, но среда разработки — IDE (Integrated Development Environment, интегрированная среда разработки) — подсвечивает синтаксис, ловит опечатки и запускает скрипты в один клик.
| Среда |
Для кого |
Сложность setup |
Ключевые возможности |
|---|---|---|---|
| Thonny | Абсолютные новички | Минимальная | Встроенный отладчик, пошаговое выполнение, поставляется вместе с Python |
| VS Code | Универсалы | Средняя | Расширение Pylance, встроенный терминал, бесплатный |
| PyCharm Community | Продвинутые | Выше средней | Умное автодополнение, рефакторинг, интеграция с Git |
Совет для старта: возьмите Thonny. Он устанавливается за минуту, встроенный отладчик показывает состояние переменных на каждом шаге — это незаменимо, когда код ведёт себя неожиданно.
Не хотите ничего устанавливать — используйте онлайн-компилятор (replit.com или programiz.com). Python запускается прямо в браузере: удобно, чтобы познакомиться с синтаксисом, но для реальных проектов нужна локальная установка.
Каждый следующий шаг добавляет одну новую концепцию. Примеры кода рабочие — копируйте, запускайте, меняйте под себя.
Главное правило синтаксиса: в Python вместо фигурных скобок {} — отступы. Стандарт PEP 8 (разработанный самим Гвидо ван Россумом) требует 4 пробела для каждого уровня вложенности. Поставьте неверный отступ — получите IndentationError.
Создайте файл hello.py и напишите одну строку:
print(«Hello, World!»)
Запустите: python hello.py. В терминале появится:
Hello, World!
Вот и вся первая программа на Python. Для сравнения: в Java та же задача — 4 строки, в C++ — 5 строк с подключением библиотеки. Именно низкий порог входа делает Python лучшим первым языком.
print() — встроенная функция. Она принимает любое количество аргументов и выводит их в консоль. Два полезных параметра:
print(«Python», «3.12», sep=»-«) # Python-3.12
print(«Шаг 1″, end=» → «)
print(«Шаг 2») # Шаг 1 → Шаг 2
Сама функция возвращает None — ничего не сохраняет, только выводит.
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}».
После условия — двоеточие, затем обязательный отступ 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.
Цикл 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 и остановит выполнение.
Список [] — изменяемая последовательность с нулевой индексацией:
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} | Да | Уникальные элементы, проверка вхождения |
Функция объявляется через 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 подсветит несоответствие ещё до запуска.
Три вещи о функциях, которые сбивают новичков:
PEP 8 рекомендует называть функции и переменные в стиле snake_case: calculate_average, а не calculateAverage.
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() — псевдоним для длинных имён
Без обработки ошибок программа «падает» на первой же некорректной операции — пользователь видит трейсбэк (стек вызовов), а несохранённые данные теряются.
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-бота, сайт и веб-приложение
Соберём первую полноценную программу на 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). Оператор ** возводит первое число в степень второго.

Этот проект собирает в одном месте все концепции шагов 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()
Разбор ключевых решений:
Три идеи для самостоятельной доработки.
Лимит попыток. Добавьте константу 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 входит в стандартную установку 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 — всё это строится без единого класса.
К ООП стоит переходить, когда:
Направления после консольных программ:
Python — высокоуровневый язык программирования общего назначения, созданный Гвидо ван Россумом. Для запуска кода нужен отдельный интерпретатор — программа, которая читает .py-файл и выполняет его построчно. Скачать официальный интерпретатор можно на python.org.
.py — стандартное расширение текстовых файлов с кодом Python. Запуск: python filename.py в терминале. Интерпретатор читает файл сверху вниз, без предварительной компиляции — в отличие от C++ или Java.
Да — онлайн-компиляторы (replit.com, programiz.com) запускают Python прямо в браузере. Ограничения: нет доступа к файловой системе, часть модулей недоступна. Для знакомства с синтаксисом подходит, для реальных проектов нужна локальная установка.
input() возвращает str — это фундаментальное правило языка. Даже если пользователь ввёл «25», переменная хранит строку «25». Для арифметики — явное преобразование: age = int(input(«Возраст: «)). При нечисловом символе возникнет ValueError — перехватывайте через try/except ValueError:.
F-строки читабельнее: f»Привет, {name}!» против «Привет, » + name + «!». Поддерживают выражения внутри фигурных скобок: f»{2 + 2}» → «4», форматирование чисел: f»{price:.2f}». Конкатенация через + требует явного str() при смешивании типов — типичная ошибка новичков.
PEP 8 — официальный стандарт оформления кода Python, разработанный Гвидо ван Россумом. Ключевые правила: 4 пробела для отступов, имена переменных в snake_case. Формально не обязателен, но IDE и линтеры (flake8, pylint) проверяют соответствие автоматически — и код становится читаемее для всех.
bare except перехватывает всё — включая KeyboardInterrupt (Ctrl+C) и SystemExit. Программа становится «неубиваемой», а реальные баги скрываются. Правило: всегда указывайте конкретный тип — except ValueError: или except (KeyError, IndexError):.
Процедурного стиля достаточно для 80% задач: парсеры, боты, скрипты автоматизации. Переходить к ООП стоит, когда проект вырос до 100+ строк с повторяющимися структурами данных, ведётся командная разработка или создаётся библиотека.
При прямом запуске python game.py переменная __name__ равна «__main__» — код внутри выполняется. При импорте import game в другой файл — не выполняется автоматически. Паттерн позволяет использовать файл одновременно как скрипт и как модуль.
Три способа: (1) в командной строке — cd папка_с_файлом → python script.py; (2) из IDE — кнопка Run или Shift+F10 в PyCharm; (3) двойной клик на .py-файл, если Python установлен с галочкой «Add Python to PATH». Если python не найден — переустановите Python с этой галочкой.
Пусть ребёнок сделает первый IT-проект уже в этом месяце
Бесплатный онлайн-курс с понятной программой, поддержкой и проектами для портфолио