Мини-проекты и итоги
Собираем всю главу в пяти небольших, но настоящих проектах — и подводим итоги.
Пять небольших, но настоящих проектов — каждый использует только то, что мы уже прошли в этой главе.
Проект 1: умный калькулятор
Считаем результат в зависимости от того, какой оператор выбран — +,
-, * или /:
if / elif — мы разберём её подробно в главе 8. Пока достаточно прочитать её как обычный текст: «если оператор такой-то — сделай так, а если другой — иначе».a, b = 12, 4
operator = "+"
if operator == "+":
rezultat = a + b
elif operator == "-":
rezultat = a - b
elif operator == "*":
rezultat = a * b
elif operator == "/":
rezultat = a / b
print(rezultat) # 16
Расширьте калькулятор так, чтобы он умел также целочисленное деление, остаток и возведение в степень.
Проект 2: конвертер времени — версия короче
Мы уже решали эту задачу в главе 4 — через // и
% по отдельности. Теперь, когда мы знаем divmod()
(раздел «Деление с остатком»), можно решить её вдвое короче:
total_seconds = 3725
hours, ostatok = divmod(total_seconds, 3600)
minutes, seconds = divmod(ostatok, 60)
print(f"{hours}ч {minutes}м {seconds}с") # 1ч 2м 5с
Проверьте свой конвертер на 0 секунд и на 90000 секунд (больше суток).
Проект 3: лаборатория кубика
Бросаем два кубика и считаем сумму и среднее — используем random.randint()
и уже знакомые операторы:
import random
kub1 = random.randint(1, 6)
kub2 = random.randint(1, 6)
summa = kub1 + kub2
srednee = summa / 2
print(f"Кубик 1: {kub1}, кубик 2: {kub2}")
print(f"Сумма: {summa}, среднее: {srednee}")
Добавьте проверку: если оба кубика выпали одинаковыми — выведите «Дубль!» (используйте == из главы 3).
Проект 4: случайный челлендж — кратные числа
Программа, которая находит все числа, кратные случайно выбранному — используем
random и % вместе:
import random
# случайное число, кратности которого мы ищем
kratnoe_chemu = random.randint(2, 9)
print(f"Ищем числа, кратные {kratnoe_chemu}, от 1 до 50")
chislo = 1
while chislo <= 50:
if chislo % kratnoe_chemu == 0:
print(chislo)
chislo += 1
while мы разберём подробно в главе 10. Здесь важно увидеть, как оператор % из этой главы находит все числа, кратные заданному: остаток от деления равен нулю именно тогда, когда число делится нацело.Измените границы поиска на 1–100 вместо 1–50.
Проект 5: геометрическая лаборатория
Собираем сразу несколько формул этой главы: расстояние между двумя точками и площадь круга такого радиуса:
import math
tochka_a = (0, 0)
tochka_b = (3, 4)
radius = math.dist(tochka_a, tochka_b)
ploshad_kruga = math.pi * radius ** 2
print(f"Расстояние между точками: {radius}")
print(f"Площадь круга такого радиуса: {round(ploshad_kruga, 2)}")
Добавьте третью точку и посчитайте периметр треугольника, образованного всеми тремя точками, используя math.dist() трижды.
Финальная карта главы
Итоги главы
Что мы теперь умеем
- Выражение — операнды плюс оператор; отличаем выражение от инструкции (statement).
- Основные операторы
+ - * /и их геометрические модели: числовая прямая для +/-, прямоугольник для умножения. //,%иdivmod()— включая то, как они работают с отрицательными числами (округление к минус бесконечности).**,pow()иmath.pow()— и классическая ловушка-2 ** 2.- Сокращённые операторы присваивания, полная карта приоритета и ассоциативность (включая правоассоциативность
**). - Перевод формул из математической записи в Python — и типичные ошибки перевода.
- Глубокий модуль
math: корни и расстояния, gcd/lcm/factorial/comb/perm, геометрия, тригонометрия, логарифмы. - Глубокий модуль
random: псевдослучайность, randint/randrange/uniform, choice/choices/sample/shuffle, seed и random vs secrets. - Отладка вычислений: три типа ошибок и приём трассировки формулы через именованные шаги.
Что дальше
В главе 6 мы возьмём числа, которые теперь умеем считать, и начнём их рисовать
— познакомимся с модулем turtle и нарисуем первые фигуры на экране.
Координаты, углы и расстояния из этой главы там сразу пригодятся.