Что такое проект
До сих пор мы изучали инструменты по отдельности. Теперь учимся складывать их в настоящую программу — начиная с того, как вообще подступиться к большой задаче.
От инструментов — к программе
Главы 1-11 научили вас инструментам по отдельности: строкам, числам, условиям, циклам, Turtle, спискам и словарям. Эта глава не добавляет новых инструментов — она учит складывать их вместе, чтобы получилась настоящая, работающая программа.
Чем проект отличается от упражнения
| Упражнение | Проект | |
|---|---|---|
| Пример | Вычислите 7 % 3 | Постройте конвертер секунд в часы/минуты/секунды с проверкой ввода |
| Входные данные | обычно нет | есть, и их нужно продумать заранее |
| Шагов | один | несколько, связанных друг с другом |
| Результат | одно значение | оформленный вывод, реакция на разные случаи |
| Ошибки | почти невозможны | нужно продумать, что может пойти не так |
Декомпозиция: разбиваем большую задачу на маленькие
Задача «Постройте игру-угадайку» слишком большая, чтобы решить её одним куском кода. Разобьём на понятные шаги:
Шаблон проекта, который мы будем использовать
Каждый крупный проект этой главы устроен по одной и той же схеме — не обязательно с этими же самыми заголовками, но в этом же порядке мысли:
Требования и «что значит „готово“»
Прежде чем писать код, полезно явно сформулировать требования — что программа обязана делать, чтобы считаться готовой. Пример для будущей игры-угадайки:
| Требование | Проверка |
|---|---|
| компьютер выбирает целое число от 1 до 100 | секрет — int в диапазоне [1, 100] |
| игрок вводит числа-попытки | input() + int() |
| программа говорит «мало» / «много» | if/elif/else |
| программа завершается на правильном ответе | цикл прекращается при guess == secret |
| попытки считаются | counter увеличивается на каждой попытке |
Разминка: статистика трёх чисел
Прежде чем переходить к крупным проектам, потренируем сам процесс — от задачи до кода — на программе из нескольких строк.
Задача: получить три числа и вывести минимальное, максимальное, сумму и среднее.
a = float(input("Первое число: "))
b = float(input("Второе число: "))
c = float(input("Третье число: "))
chisla = [a, b, c]
print(f"Минимум: {min(chisla)}")
print(f"Максимум: {max(chisla)}")
print(f"Сумма: {sum(chisla)}")
print(f"Среднее: {sum(chisla) / len(chisla):.2f}")
min/max/sum/len — глава 11) и оформленный результат (f-строки — глава 8). Дальше в главе — то же самое, но крупнее.