Урок 2: Собираем паззл: из деталей — в программу
Сегодня мы поговорим о том, как управлять ошибками, работать с файлами и использовать чужой код. Это уже почти магия!
Часть 1: «Ой, я ошибся!» — Обработка исключений (Try/Except)
В жизни бывает: тянешься за чашкой, а она падает. В программировании тоже: просишь пользователя ввести число, а он вводит слово. Программа ругается и закрывается. Наша задача — поймать падающую чашку до того, как она разобьётся.
Вот как это выглядит без нашей защиты:
number = int(input("Введите число: ")) # int() преобразует текст в число
print("Вы ввели:", number)
Если ввести “пять”, программа аварийно остановится с страшной ошибкой ValueError
.
Решаем проблему: Ставим мягкий батут вместо бетонного пола.
try: # Попробуй сделать этот код...
number = int(input("Введите число: "))
print("Всё ок, вы ввели:", number)
except ValueError: # ...если случилась ОШИБКА ПРЕОБРАЗОВАНИЯ (ValueError)...
print("Эй, это же не число! Попробуй ещё раз.") # ...сделай вот это.
# Программа не сломается, а вежливо попросит ещё раз!
Это называется обработка исключений. Теперь твои программы становятся вежливыми и неубиваемыми!
Часть 2: «Помни всё» — Работа с файлами
Программы живут в оперативной памяти и всё забывают после закрытия. Чтобы сохранить данные (результаты игры, список дел), нужно записать их в файл. Это как консервация.
Запись в файл:
# Открываем (или создаем) файл 'notes.txt' для записи ('w' - write)
# 'w' всегда сначала полностью очищает файл
with open('notes.txt', 'w', encoding='utf-8') as file:
file.write("Купить хлеб\n") # \n - это перенос строки
file.write("Выучить Python\n")
print("Записал! Посмотри файл 'notes.txt' рядом со своей программой.")
Ключевое слово with
— это лучший способ. Оно само закроет файл после работы, даже если произойдет ошибка. Как автоматическая дверь, которая захлопывается сама.
Чтение из файла:
# Открываем тот же файл для чтения ('r' - read)
with open('notes.txt', 'r', encoding='utf-8') as file:
content = file.read() # Читаем ВСЁ содержимое сразу
print("Вот что у нас записано:")
print(content)
А можно читать построчно, чтобы обрабатывать каждую задачу отдельно:
with open('notes.txt', 'r', encoding='utf-8') as file:
for line in file: # Читаем файл построчно
print("Задача:", line.strip()) # .strip() убирает лишние пробелы и переносы
Часть 3: «Не изобретай велосипед» — Модули и импорт
Зачем самому писать код для сложной математики, если кто-то уже это сделал? В Python есть куча готовых «чемоданов с инструментами» — они называются модули.
Ты просто говоришь Python: «Принеси мне тот чемодан, я буду использовать инструменты из него».
Пример с модулем math
:
import math # Импортируем модуль для сложной математики
# Теперь используем инструменты из этого модуля через точку
print("Квадратный корень из 16:", math.sqrt(16))
print("Число Пи — это примерно:", math.pi)
print("Синус 90 градусов:", math.sin(math.radians(90))) # Переводим градусы в радианы и считаем синус
Пример с модулем random
(для игр):
import random
# Загадываем число от 1 до 10
secret_number = random.randint(1, 10)
print("Я загадал число от 1 до 10. Попробуй угадать!")
# Бросаем игральный кубик
dice_roll = random.randint(1, 6)
print("На кубике выпало:", dice_roll)
# Случайный выбор кого-либо из списка
players = ["Аня", "Боря", "Витя", "Галя"]
print("Водит:", random.choice(players))
Устанавливать эти модули не нужно — они уже есть в стандартной поставке Python!
Часть 4: Практика! Соберём всё вместе.
Давай напишем простую программу-ежедневник. Она будет: 1. Показывать список дел при запуске. 2. Спрашивать, хочешь ли ты добавить новое дело. 3. Записывать его в файл (и не ломаться при ошибках).
# -*- coding: utf-8 -*-
filename = "my_todos.txt"
# 1. Пробуем прочитать и показать существующие задачи
try:
with open(filename, 'r', encoding='utf-8') as file:
print("Мой список дел:")
print(file.read())
except FileNotFoundError: # Обрабатываем ошибку "Файл не найден"
print("Пока дел нет. Самое время добавить первое!")
# 2. Спрашиваем у пользователя про новое дело
new_task = input("\nВведи новое дело (или нажми Enter чтобы выйти): ")
if new_task: # Если строка не пустая
# 3. Открываем файл в режиме ДОЗАПИСИ ('a' - append)
with open(filename, 'a', encoding='utf-8') as file:
file.write(new_task + "\n") # Добавляем дело в конец файла
print("Задача добавлена!")
else:
print("Ну ладно, пока!")
Задание для тебя: Улучши эту программу! Сделай так, чтобы она нумеровала задачи при выводе. Или чтобы можно было не только добавлять, но и удалять сделанные дела (это сложнее, но очень интересная задача!).
Что дальше? Ты теперь умеешь очень многое: данные, логика, функции, файлы, ошибки, модули. Этого хватит для десятков полезных скриптов.
- Следующий шаг — ООП (Объектно-Ориентированное Программирование). Это модель мира, где всё является объектами (как в игре: есть объект «Игрок», «Враг», «Предмет»). Но не спеши, сначала как следует закрепи то, что уже узнал.
- Придумай проект: Простой сайт на
Flask
, телеграм-бот наpython-telegram-bot
, парсер данных с веб-страницы с помощьюrequests
иbeautifulsoup4
.
Главное — продолжай кодить. Каждая ошибка — это новый урок. У тебя всё получится!