Python на Mac с нуля
Полный практический курс для абсолютных новичков. От первого «Hello, World!» до создания собственных программ — с геймификацией, AI-помощниками и 12 ачивками.
Почему этот курс работает
Что такое программирование и Python
Что такое программирование?
Представьте, что вы хотите научить робота мыть посуду. Вам нужно дать ему точную пошаговую инструкцию:
- Открой шкаф
- Достань тарелку
- Включи воду
- Намочь губку
- Нанеси средство
- Помой тарелку
- Ополосни
- Поставь на сушилку
Программирование — это написание инструкций для компьютера. Компьютер выполняет команды буквально: ровно то, что вы написали, не больше и не меньше.
Почему именно Python?
| Причина | Объяснение |
|---|---|
| 🗣️ Читается как английский | print("Привет") — буквально «напечатай привет» |
| 🧩 Огромное сообщество | Миллионы разработчиков — любой вопрос уже кем-то задан |
| 🌐 Применяется везде | Веб-сайты, AI, анализ данных, автоматизация, игры |
| 🎓 Идеален для старта | Минимум «магии» — вы сразу понимаете, что происходит |
| 🤖 Лидер в AI/ML | ChatGPT, нейросети, машинное обучение — всё на Python |
Ключевые термины
| Термин | Что значит | Аналогия |
|---|---|---|
| Код | Текст программы | Рецепт блюда |
| Переменная | «Коробка» для данных | Коробка с подписью |
| Функция | Готовая команда | Кнопка на миксере |
| Библиотека | Набор готовых функций | Шкаф с инструментами |
| Интерпретатор | Программа, выполняющая Python | Переводчик |
| Терминал | Чат с компьютером текстом | Чат с ботом |
| Пакет | Сторонняя библиотека | Приложение из App Store |
Терминал: ваш первый инструмент
Что такое Терминал?
Терминал — это текстовый чат с вашим компьютером. Вместо кликания мышкой по иконкам вы пишете команды словами.
Открываем Терминал
Способ 1 — через Spotlight (самый быстрый):
- Нажмите ⌘ + Пробел — откроется Spotlight
- Напишите
TerminalилиТерминал - Нажмите Enter
Первые команды
Введите каждую команду и нажмите Enter:
# Кто вы?
whoami
# Где вы находитесь?
pwd
# Что вокруг?
ls
# Создать папку
mkdir моя_первая_папка
# Зайти в папку
cd моя_первая_папка
# Вернуться назад
cd ..
# Очистить экран
clear
Шпаргалка команд
| Команда | Что делает | Как запомнить |
|---|---|---|
pwd | Где я? | Print Working Directory |
ls | Что вокруг? | List (список) |
cd | Иди туда | Change Directory |
cd .. | Шаг назад | .. = родительская папка |
mkdir | Создай папку | Make Directory |
clear | Очисти экран | Очистить |
pwd?Установка Python на Mac
Порядок установки
| Шаг | Инструмент | Аналогия |
|---|---|---|
| 1 | Xcode Command Line Tools | Фундамент дома |
| 2 | Homebrew | Строительный магазин |
| 3 | Python 3.14 | Материал для стен |
Шаг 1: Xcode Command Line Tools
xcode-select --install
Нажмите «Установить» в появившемся окне. Подождите 5–15 минут.
Проверка:
gcc --version
Шаг 2: Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
После установки добавьте в PATH (Apple Silicon):
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
Проверка:
brew --version
Шаг 3: Python 3.14
brew install python
Проверка:
python3 --version
# Ожидаемый результат: Python 3.14.x
which python3
# Ожидаемый результат: /opt/homebrew/bin/python3
pip3 --version
/usr/bin/python3) — macOS использует его для своих задач. Всегда пишите python3 (с тройкой).
Редактор кода VS Code
Почему VS Code?
Установка
brew install --cask visual-studio-code
Необходимые расширения
| Расширение | Зачем нужно |
|---|---|
| Python (Microsoft) | Подсветка, автодополнение, отладка |
| Pylance (Microsoft) | Умные подсказки, проверка типов |
| Russian Language Pack | Русификация интерфейса |
Создаём рабочую папку
mkdir ~/python-projects
cd ~/python-projects
code ~/python-projects
code не работаетВыбор интерпретатора
- Нажмите ⇧ + ⌘ + P
- Введите
Python: Select Interpreter - Выберите
/opt/homebrew/bin/python3
Первая программа и основы синтаксиса
🎉 Ваша первая программа!
Создайте файл hello.py в VS Code и напишите:
# Это комментарий — Python его игнорирует
# Комментарии — заметки для себя и других
print("Привет, мир!")
print("Я написал свою первую программу!")
Запуск:
python3 hello.py
Функция print()
print("Текст в кавычках") # Выведет: Текст в кавычках
print(42) # Выведет: 42
print("Сумма:", 2 + 2) # Выведет: Сумма: 4
Отступы — ЭТО ВАЖНО!
# ✅ Правильно:
if True:
print("Это внутри блока") # 4 пробела отступа
# ❌ Неправильно — будет ошибка:
if True:
print("Нет отступа!") # ОШИБКА!
Интерактивный режим
python3
# Откроется интерактивная сессия:
>>> print("Привет!")
Привет!
>>> 2 + 2
4
>>> exit() # выйти
about_me.py и напишите программу, которая выводит: ваше имя, город, почему вы учите Python, какую программу хотите создать.Переменные и типы данных
Что такое переменная?
имя = "Алексей"
возраст = 25
город = "Москва"
рост = 1.75
учу_python = True
print("Меня зовут:", имя)
print(f"Мой рост: {рост} м") # f-строка
Типы данных
| Тип | Что хранит | Пример | Аналогия |
|---|---|---|---|
str | Текст | "Привет" | Записка |
int | Целое число | 42 | Счётчик |
float | Дробное число | 3.14 | Линейка |
bool | Истина/Ложь | True / False | Выключатель |
list | Список | [1, 2, 3] | Нумер. шкаф |
dict | Словарь | {"имя": "Алексей"} | Тел. книга |
Математические операции
a = 10
b = 3
print(a + b) # 13 — сложение
print(a - b) # 7 — вычитание
print(a * b) # 30 — умножение
print(a / b) # 3.33 — деление
print(a // b) # 3 — целочисл. деление
print(a % b) # 1 — остаток
print(a ** b) # 1000 — степень
Списки
фрукты = ["яблоко", "банан", "вишня"]
print(фрукты[0]) # "яблоко" (нумерация с 0!)
print(фрукты[-1]) # "вишня" (последний)
фрукты.append("манго")
print(len(фрукты)) # 4
for фрукт in фрукты:
print(f"Я люблю {фрукт}")
Словари
человек = {
"имя": "Алексей",
"возраст": 25,
"город": "Москва"
}
print(человек["имя"]) # "Алексей"
человек["работа"] = "Python-разработчик"
for ключ, значение in человек.items():
print(f"{ключ}: {значение}")
calculator.py: попросите пользователя ввести два числа (float(input())), выведите сумму, разность, произведение и частное.Условия и логика
Что такое условия?
погода = "дождь"
if погода == "дождь":
print("Бери зонт!")
elif погода == "холодно":
print("Надевай куртку!")
else:
print("Одевайся как хочешь!")
Операторы сравнения
| Оператор | Значение | Пример |
|---|---|---|
== | Равно | 5 == 5 → True |
!= | Не равно | 5 != 3 → True |
> | Больше | 5 > 3 → True |
< | Меньше | 3 < 5 → True |
>= | Больше или равно | 5 >= 5 → True |
<= | Меньше или равно | 3 <= 5 → True |
== (сравнение) vs = (присваивание). Это разные вещи!Логические операторы
возраст = 25
есть_права = True
if возраст >= 18 and есть_права:
print("Можно водить машину")
if возраст < 18 or not есть_права:
print("Нельзя водить")
quiz.py — викторину: задайте вопрос, проверьте ответ через if/elif/else, выведите результат.Циклы: повторяем с умом
Цикл for
for i in range(5):
print(i)
# 0, 1, 2, 3, 4
имена = ["Алексей", "Мария", "Дмитрий"]
for имя in имена:
print(f"Привет, {имя}!")
Цикл while
счётчик = 0
while счётчик < 5:
print(f"Счётчик: {счётчик}")
счётчик += 1 # Не забудьте!
🎮 Игра «Угадай число»
import random
загаданное = random.randint(1, 100)
попытки = 0
print("Я загадал число от 1 до 100!")
while True:
догадка = int(input("Ваш вариант: "))
попытки += 1
if догадка < загаданное:
print("Больше!")
elif догадка > загаданное:
print("Меньше!")
else:
print(f"Угадали за {попытки} попыток!")
break
times_table.py: спросите число, выведите таблицу умножения от 1 до 10.Функции: создаём свои команды
Что такое функция?
def поприветствовать(имя):
print(f"Привет, {имя}! Рад тебя видеть!")
поприветствовать("Алексей")
поприветствовать("Мария")
Возврат результата
def сложить(a, b):
return a + b
сумма = сложить(3, 5)
print(сумма) # 8
Калькулятор функциями
def сложить(a, b): return a + b
def вычесть(a, b): return a - b
def умножить(a, b): return a * b
def разделить(a, b):
if b == 0:
return "Ошибка: деление на ноль!"
return a / b
print("Результат:", сложить(10, 5))
print("Результат:", разделить(10, 0))
temperature.py: функция celsius_to_fahrenheit(celsius), формула: F = C × 9/5 + 32.Виртуальные окружения и пакеты
Что такое пакеты?
Почему виртуальные окружения?
Начиная с Python 3.14, действует PEP 668: нельзя ставить пакеты в глобальный Python. Виртуальное окружение — изолированная среда для каждого проекта.
Создаём окружение
# Создаём папку
mkdir ~/python-projects/my-first-project
cd ~/python-projects/my-first-project
# Создаём виртуальное окружение
python3 -m venv .venv
# Активируем
source .venv/bin/activate
# Появится (.venv) в начале строки!
Работа с пакетами
pip install requests # Установить
pip list # Список установленных
pip freeze > requirements.txt # Сохранить список
pip install -r requirements.txt # Установить из файла
deactivate # Выйти из окружения
| Пакет | Что делает |
|---|---|
requests | Работа с HTTP/API |
rich | Красивый вывод в терминале |
pytest | Тестирование кода |
black | Форматирование кода |
flask | Веб-приложения |
Работа с файлами и данными
Запись и чтение
# Записываем
with open("заметки.txt", "w") as файл:
файл.write("Мой первый файл!\n")
файл.write("Вторая строка.\n")
# Читаем
with open("заметки.txt", "r") as файл:
print(файл.read())
JSON
import json
данные = {
"имя": "Алексей",
"навыки": ["Python", "Git", "SQL"]
}
with open("данные.json", "w") as f:
json.dump(данные, f, ensure_ascii=False, indent=2)
with open("данные.json", "r") as f:
загруженные = json.load(f)
print(загруженные["имя"])
Мини-проект: Дневник
import datetime
def записать_в_дневник(запись):
дата = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
with open("дневник.txt", "a") as файл:
файл.write(f"\n[{дата}]\n{запись}\n{'─' * 40}\n")
print("✓ Запись сохранена!")
def показать_дневник():
try:
with open("дневник.txt", "r") as файл:
print(файл.read())
except FileNotFoundError:
print("Дневник пуст!")
записать_в_дневник("Сегодня я научился работать с файлами!")
показать_дневник()
AI и LLM как помощники программиста
Инструменты AI (2026)
| Инструмент | Для чего | Цена |
|---|---|---|
| 🥇 GitHub Copilot | Автодополнение в VS Code, лучший для новичка | Free / $10/мес |
| 🥈 ChatGPT / Claude | Обучение, объяснение кода, отладка | Free / $20/мес |
| 🥉 Cursor | AI-native IDE для продвинутых | Free / $20/мес |
4 золотых правила
Примеры промптов
Я изучаю Python второй день. Объясни, как работают списки,
используя аналогии из повседневной жизни. Приведи 3 примера
кода от простого к сложному.
Вот мой код: [код]. Он выдаёт ошибку: [ошибка].
Объясни, почему возникает ошибка и как исправить.
Не просто дай ответ — объясни причину.
Я хочу создать программу, которая [описание].
Помоги разбить задачу на маленькие шаги.
Не пиши весь код — давай решать пошагово.
Мини-проект: Персональный ассистент
def показать_задачи(задачи):
if not задачи:
print("\n📋 Список задач пуст!")
else:
print("\n📋 Ваши задачи:")
for i, (задача, выполнена) in enumerate(задачи, 1):
статус = "✅" if выполнена else "⬜"
print(f" {i}. {статус} {задача}")
def главный_цикл():
задачи = []
print("🤖 Привет! Я менеджер задач.")
print(" Команды: добавить, выполнить, список, выход\n")
while True:
команда = input("Что сделать? ").lower().strip()
if команда == "добавить":
текст = input("Что добавить? ")
задачи.append((текст, False))
print(f"✓ Добавлено: {текст}")
elif команда == "список":
показать_задачи(задачи)
elif команда == "выход":
print("До свидания! 👋")
break
else:
print("Неизвестная команда.")
if __name__ == "__main__":
главный_цикл()
🎓 Финальный проект
Проект: «Ежедневный планировщик»
Создайте программу, которая:
✅ Сохраняет задачи в файл (не пропадают после закрытия)
✅ Показывает задачи, отсортированные по приоритету
✅ Позволяет удалять выполненные задачи
✅ Показывает статистику (всего / выполнено / осталось)
Подсказки для реализации
import json
import os
ФАЙЛ_ЗАДАЧ = "задачи.json"
def загрузить_задачи():
"""Загружает задачи из файла"""
if os.path.exists(ФАЙЛ_ЗАДАЧ):
with open(ФАЙЛ_ЗАДАЧ, "r") as f:
return json.load(f)
return []
def сохранить_задачи(задачи):
"""Сохраняет задачи в файл"""
with open(ФАЙЛ_ЗАДАЧ, "w") as f:
json.dump(задачи, f, ensure_ascii=False, indent=2)
def добавить_задачу(задачи):
"""Добавляет новую задачу"""
текст = input("Описание задачи: ")
print("Приоритет: 1-высокий, 2-средний, 3-низкий")
приоритет = int(input("Выберите (1-3): "))
задачи.append({
"текст": текст,
"приоритет": приоритет,
"выполнена": False
})
сохранить_задачи(задачи)
print("✓ Задача добавлена!")
# ... продолжите сами: показ, выполнение, удаление, статистика
🏆 Ваши достижения
| # | Ачивка | Статус |
|---|---|---|
| 0 | 🏆 «Первый шаг» | ⬜ |
| 1 | 🏆 «Командующий» | ⬜ |
| 2 | 🏆 «Укротитель Python» | ⬜ |
| 3 | 🏆 «Архитектор» | ⬜ |
| 4 | 🏆 «Hello, World!» | ⬜ |
| 5 | 🏆 «Хранитель данных» | ⬜ |
| 6 | 🏆 «Принимающий решения» | ⬜ |
| 7 | 🏆 «Машина времени» | ⬜ |
| 8 | 🏆 «Изобретатель» | ⬜ |
| 9 | 🏆 «Менеджер проектов» | ⬜ |
| 10 | 🏆 «Архивариус» | ⬜ |
| 11 | 🏆 «Симбиоз» | ⬜ |
| ★ | 🎓 «Выпускник курса» | ⬜ |
Прогресс: 0 / 13