Глава 4 · Python любит числа

Мини-проекты и итоги главы

Собираем всё пройденное в три небольших, но настоящих проекта — и подводим итоги главы финальной картой выбора числового типа.

Три небольших, но настоящих проекта — каждый использует только то, что мы уже прошли в этой главе (и в главе 3).

Проект A: калькулятор покупки

Вводим цену и количество, считаем сумму. Сравним float и Decimal на одном и том же примере:

kalkulyator_pokupki.py
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 — точно, гарантированно
★ Базовая практика
Challenge

Добавьте налог (например, 23%) к сумме — версией на Decimal.

Проект B: конвертер времени

Вводим общее число секунд — считаем часы, минуты и секунды через // и % (раздел 4.7) — здесь у этих операторов появляется настоящее применение:

konverter_vremeni.py
total_seconds = 3725

hours = total_seconds // 3600
minutes = (total_seconds % 3600) // 60
seconds = total_seconds % 60

print(f"{hours}ч {minutes}м {seconds}с")  # 1ч 2м 5с
★★ Самостоятельная задача
Challenge

Проверьте свою функцию на 0 секунд и на 90000 секунд (больше суток).

Проект C: геометрический калькулятор

Вводим радиус окружности — считаем диаметр, длину окружности и площадь через math.pi:

geometricheskij.py
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}")
★★★ Задача повышенной сложности
Challenge · системы счисления

Дополнительно: напишите мини-«переводчик» — по введённому десятичному числу выведите его bin(), oct() и hex() (раздел 4.3).

Практика: мини-проекты главы 4
Интерактивный ноутбук прямо в браузере — калькулятор покупки, конвертер времени, геометрия
Открыть практику →

Финальная карта: какой числовой тип мне нужен?

Какой числовой тип/инструмент мне нужен?
Нужен целый счёт?
int
Нужно обычное дробное измерение?
float
Нужна точная десятичная сумма (деньги)?
Decimal
Нужна точная дробь p/q?
Fraction
Нужна действительная + мнимая часть?
complex
Нужны готовые математические функции?
math / cmath
Нужна случайность для игр/симуляций?
random
Нужна случайность для безопасности?
secrets
Главная сводная карта главы 4 — возвращайтесь к ней в будущих проектах

Итоги главы

Что мы теперь умеем

  • Понимаем разницу между математическим числом и его представлением в компьютере, и что имена указывают на неизменяемые числовые объекты — не «коробки».
  • Уверенно работаем с 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 для реальных задач.
Что дальше
В главе 5 мы продолжим работать с числами — сравнения, логические операции и первые условные конструкции.