Глава 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. Для настоящего округления нужна отдельная функция round() — о ней в главе 5.Преобразование текста в число
Если строка действительно выглядит как число, её можно превратить обратно:
tekst_v_chislo.py
age_text = "10"
age = int(age_text)
print(age + 5) # 15 — теперь это настоящее число
Не любой текст получится преобразовать
int("десять") вызовет ValueError — Python не умеет читать числа словами. Преобразовать можно только текст, который выглядит как число: цифры, возможно со знаком и точкой.Сборка строки из чисел: конкатенация → 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()) и позволяют сразу писать выражения внутри фигурных скобок. Классический способ через + всё ещё встречается в старом коде и стоит уметь его читать, но для нового кода используйте f-строки.
Практика в Jupyter Notebook
04-04-preobrazovanie-tipov.ipynb · int(), float(), str() на практике