Глава 4 · Python любит числа
Преобразование типов чисел
Числа можно превращать друг в друга и в текст — но не всегда наоборот, и не всегда так, как кажется на первый взгляд.
У каждого числового типа есть своя функция-преобразователь с тем же именем:
int(), float(),
complex(). Кроме того, любое число можно превратить в текст
функцией str() — и наоборот, текст, похожий на число, можно
превратить обратно.
preobrazovanie.py
whole = int(3.99)
print(whole) # 3 — дробная часть отбрасывается, а не округляется
decimal = float(7)
print(decimal) # 7.0
text = str(42)
print(text, type(text)) # "42" <class 'str'>
int() отбрасывает дробную часть, а не округляет
int(3.99) равно 3, а не 4 — это усечение (truncation) в сторону нуля, а не округление. Для настоящего округления нужна отдельная функция round() (раздел 4.13).Направление усечения важно и для отрицательных чисел — int()
всегда идёт К нулю, а не «вниз» в математическом смысле:
int_otricatelnoe.py
print(int(3.9)) # 3
print(int(-3.9)) # -3, а не -4
Преобразование текста в число
tekst_v_chislo.py
age_text = "10"
age = int(age_text)
print(age + 5) # 15 — теперь это настоящее число
Не любой текст получится преобразовать
int("десять") вызовет ValueError — Python не умеет читать числа словами. Преобразовать можно только текст, который выглядит как число.Разбор текста с указанием системы счисления
Мы уже видели это в разделе 4.3 — int() умеет читать текст не
только в десятичной системе:
s_osnovaniem.py
print(int("1010", 2)) # 10
print(int("FF", 16)) # 255
Сборка строки из чисел: конкатенация → f-строка
Классический подход
age = 10
message = "Возраст: " + str(age) + " лет"
print(message)
# обязательно вручную оборачивать число в str()
Современный Python 3.14
age = 10
message = f"Возраст: {age} лет"
print(message)
# f-строка сама выполняет преобразование внутри {}
Что использовать сегодня: f-строки (f-strings), появившиеся в Python 3.6 и с тех пор ставшие стандартом. Они короче, меньше подвержены ошибкам (не нужно помнить о str()) и позволяют сразу писать выражения внутри фигурных скобок.
Практика: int(), float(), str() и парсинг с основанием
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки