Мини-проекты и итоги главы
Собираем всё пройденное в три небольших, но настоящих проекта — и подводим итоги главы финальной картой выбора числового типа.
Три небольших, но настоящих проекта — каждый использует только то, что мы уже прошли в этой главе (и в главе 3).
Проект A: калькулятор покупки
Вводим цену и количество, считаем сумму. Сравним float и Decimal на одном и том же примере:
from decimal import Decimal
# Версия на float — обычная, но с риском погрешности
price_float = 19.99
quantity = 3
print(price_float * quantity) # 59.97 — здесь совпало, но не всегда так повезёт
# Версия на Decimal — предсказуемая точность для денег
price_decimal = Decimal("19.99")
print(price_decimal * quantity) # 59.97 — точно, гарантированно
Добавьте налог (например, 23%) к сумме — версией на Decimal.
Проект B: конвертер времени
Вводим общее число секунд — считаем часы, минуты и секунды через //
и % (раздел 4.7) — здесь у этих операторов появляется настоящее
применение:
total_seconds = 3725
hours = total_seconds // 3600
minutes = (total_seconds % 3600) // 60
seconds = total_seconds % 60
print(f"{hours}ч {minutes}м {seconds}с") # 1ч 2м 5с
Проверьте свою функцию на 0 секунд и на 90000 секунд (больше суток).
Проект C: геометрический калькулятор
Вводим радиус окружности — считаем диаметр, длину окружности и площадь через
math.pi:
import math
radius = 5
diameter = radius * 2
circumference = 2 * math.pi * radius
area = math.pi * radius ** 2
print(f"Диаметр: {diameter}")
print(f"Длина окружности: {circumference:.2f}")
print(f"Площадь: {area:.2f}")
Дополнительно: напишите мини-«переводчик» — по введённому десятичному числу выведите его bin(), oct() и hex() (раздел 4.3).
Финальная карта: какой числовой тип мне нужен?
Итоги главы
Что мы теперь умеем
- Понимаем разницу между математическим числом и его представлением в компьютере, и что имена указывают на неизменяемые числовые объекты — не «коробки».
- Уверенно работаем с int: произвольная точность, связь с bool, подчёркивания-разделители.
- Понимаем системы счисления — decimal/binary/octal/hex — и умеем конвертировать между ними.
- Знаем полный набор арифметических операторов и их порядок выполнения.
- Различаем /, // и % — и понимаем, как работает отрицательное floor-деление.
- Понимаем, почему 0.1 + 0.2 не равно ровно 0.3, и умеем сравнивать float через math.isclose().
- Умеем округлять числа через round(), floor(), ceil() и trunc() — и знаем их разницу для отрицательных чисел.
- Знаем, когда использовать Decimal (деньги) и Fraction (точные дроби) вместо float.
- Понимаем complex и комплексную плоскость, и умеем пользоваться math/cmath, random/secrets и statistics.
- Умеем распознавать inf и nan, и отлаживать типичные числовые ошибки.
- Собрали три мини-проекта, использующих числа Python для реальных задач.