Привет! Мы уже изучили с тобой, что в Python есть разные типы данных: числа (int, float), строки (str), логический тип (bool). Но что делать, если нужно превратить один тип в другой? Например, пользователь ввёл число в виде строки, а нам нужно его сложить с другим числом? Или наоборот — соединить число с текстом?
В этой статье мы разберём:
- Зачем нужно преобразование типов
- Функции
int(),str(),float() - Как безопасно преобразовывать данные
- Частые ошибки и как их избежать
- Что нужно знать перед началом
- Основная часть
- Зачем нужно преобразование типов
- Функция int() — преобразование в целое число
- Функция float() — преобразование в дробное число
- Функция str() — преобразование в строку
- Пример из реальной жизни: обработка пользовательского ввода
- Обработка ошибок при преобразовании
- Задачи для закрепления
- Нюансы и подводные камни
- int() не округляет, а отбрасывает дробную часть
- Для округления используй round():
- Преобразование строки с пробелами
- Пустая строка или буквы
- Частые ошибки и как их избежать
- Ошибка 1: Забыл преобразовать тип
- Ошибка 2: Путаница между str() и int() при конкатенации
- Ошибка 3: Преобразование строки с точкой в int
- 6. Шпаргалка
- Заключение / Выводы
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный Python
- Базовое понимание переменных, чисел и строк (статьи 2–4)
Совет: Открой VS Code и повторяй примеры. Преобразование типов — очень частый приём в реальных программах.
Основная часть
Зачем нужно преобразование типов
Представь, что ты пишешь программу, которая спрашивает у пользователя его возраст. Пользователь вводит 25, но Python получает это значение как строку ("25"). Если ты попробуешь прибавить к этому числу 1, получишь ошибку:
age = input("Сколько тебе лет? ") # пользователь вводит 25
print(age + 1) # Ошибка! str + int нельзяЧтобы это исправить, нужно преобразовать строку в число.
Функция int() — преобразование в целое число
int() превращает в целое число:
- Дробные числа (float) → целые (отбрасывается дробная часть)
- Строки с числами (
"5","123") → целые числа - Логические значения:
True→1,False→0
Примеры:
# Превращаем строку в число
price_str = "100"
price_int = int(price_str)
print(price_int + 50) # 150
# Превращаем float в int (дробная часть отбрасывается, не округляется!)
x = 3.99
y = int(x)
print(y) # 3
# Превращаем bool в int
print(int(True)) # 1
print(int(False)) # 0Важно:
int()не округляет, а отбрасывает дробную часть.int(3.9)будет3, а не4.
Ошибка: Если строка содержит не число, Python выдаст
ValueError:
# int("hello") # ValueError: invalid literal for int()Функция float() — преобразование в дробное число
float() превращает в число с плавающей точкой:
- Целые числа → дробные (
5→5.0) - Строки с числами (
"3.14","5") → дробные числа - Логические значения:
True→1.0,False→0.0
Примеры:
# Превращаем строку в float
pi_str = "3.14159"
pi_float = float(pi_str)
print(pi_float * 2) # 6.28318
# Превращаем int в float
a = 5
b = float(a)
print(b) # 5.0
# Превращаем bool в float
print(float(True)) # 1.0
print(float(False)) # 0.0Совет:
float()полезен, когда ты получаешь от пользователя дробные числа (например, цену товара, вес, рост).
Функция str() — преобразование в строку
str() превращает любой тип данных в строку. Это нужно, например, когда ты хочешь соединить число с текстом.
Примеры:
# Превращаем число в строку
age = 25
message = "Мне " + str(age) + " лет"
print(message) # Мне 25 лет
# Превращаем float в строку
price = 19.99
text = "Цена: " + str(price)
print(text) # Цена: 19.99
# Превращаем bool в строку
is_active = True
print("Статус: " + str(is_active)) # Статус: TrueСовет: Для соединения строк и чисел лучше использовать f-строки (мы их изучали ранее), но
str()тоже пригодится.
Пример из реальной жизни: обработка пользовательского ввода
Самое частое применение преобразования типов — это получение данных от пользователя через input() (который всегда возвращает строку) и превращение их в числа.
# Программа: калькулятор сложения двух чисел
num1_str = input("Введите первое число: ")
num2_str = input("Введите второе число: ")
num1 = int(num1_str)
num2 = int(num2_str)
result = num1 + num2
print("Сумма:", result)Совет: Опытные программисты часто пишут короче для экономии времени:
num1 = int(input("Введите первое число: "))
num2 = int(input("Введите второе число: "))
print("Сумма:", num1 + num2)Обработка ошибок при преобразовании
Если пользователь введёт не число, программа упадёт с ошибкой ValueError. Как это предотвратить?
# Безопасное преобразование с проверкой
user_input = input("Введите число: ")
if user_input.isdigit():
number = int(user_input)
print("Вы ввели:", number)
else:
print("Ошибка! Введите целое число.")Важно: Метод
isdigit()проверяет только целые положительные числа. Для отрицательных и дробных понадобятся другие способы (например,try-except). Об этом в отдельной статье.
Задачи для закрепления
Попробуй решить задачи самостоятельно.
Задача 1. Пользователь вводит два числа. Выведи их сумму, разность и произведение.
Задача 2. Пользователь вводит свой рост (в метрах, дробное число) и вес. Вычисли индекс массы тела (ИМТ) по формуле: вес / (рост * рост).
Задача 3. Что выведет код?
a = int(3.9)
b = float(5)
c = str(10)
print(a, b, c)Задача 4. Пользователь вводит своё имя и возраст. Выведи сообщение: «Привет, [имя]! Через 5 лет тебе будет [возраст+5] лет».
Задача 5. Напиши программу, которая запрашивает у пользователя два числа и выводит результат их деления. Если пользователь ввёл не число, выведи сообщение об ошибке.
Ответы (не подглядывай)
Задача 1
a = int(input("Введите первое число: "))
b = int(input("Введите второе число: "))
print("Сумма:", a + b)
print("Разность:", a - b)
print("Произведение:", a * b)Задача 2
height = float(input("Введите рост в метрах: "))
weight = float(input("Введите вес в кг: "))
bmi = weight / (height * height)
print("Ваш ИМТ:", round(bmi, 2))Задача 3
# 3 5.0 10
a = int(3.9) # 3
b = float(5) # 5.0
c = str(10) # "10"
print(a, b, c) # 3 5.0 10Задача 4
name = input("Как тебя зовут? ")
age = int(input("Сколько тебе лет? "))
print(f"Привет, {name}! Через 5 лет тебе будет {age + 5} лет")Задача 5
try:
num1 = float(input("Введите первое число: "))
num2 = float(input("Введите второе число: "))
result = num1 / num2
print("Результат деления:", result)
except ValueError:
print("Ошибка: нужно ввести число!")
except ZeroDivisionError:
print("Ошибка: деление на ноль!")Нюансы и подводные камни
int() не округляет, а отбрасывает дробную часть
print(int(3.9)) # 3, а не 4
print(int(-3.9)) # -3, а не -4Для округления используй round():
print(round(3.9)) # 4Преобразование строки с пробелами
print(int(" 25 ")) # 25 (пробелы игнорируются)
print(int("25.5")) # ValueError! Точка недопустима для intПустая строка или буквы
# int("") # ValueError
# int("abc") # ValueError
# float("") # ValueErrorВсегда проверяй ввод пользователя перед преобразованием.
Частые ошибки и как их избежать
Ошибка 1: Забыл преобразовать тип
age = input("Сколько тебе лет? ")
print(age + 5) # Ошибка! str + intКак исправить:
age = int(input("Сколько тебе лет? "))
print(age + 5)Ошибка 2: Путаница между str() и int() при конкатенации
name = "Анна"
age = 25
print(name + age) # Ошибка! str + intКак исправить:
print(name + str(age)) # Анна25
# Или через f-строку (рекомендуется)
print(f"{name}{age}")Ошибка 3: Преобразование строки с точкой в int
# int("3.14") # ValueError! Точка недопустима для intКак исправить: сначала преобразовать в float, потом в int:
value = int(float("3.14")) # 36. Шпаргалка
| Что нужно | Как пишется |
|---|---|
| Преобразовать в целое число | int(x) |
| Преобразовать в дробное число | float(x) |
| Преобразовать в строку | str(x) |
| Получить тип переменной | type(x) |
| Проверить, является ли строка целым числом | s.isdigit() |
| Округлить число | round(x, n) |
Заключение / Выводы
Сегодня мы узнали:
- int() — превращает в целое число
- float() — превращает в дробное число
- str() — превращает в строку
- Преобразование типов нужно для обработки пользовательского ввода
- Частые ошибки: забыл преобразовать, путаница между типами, проблемы с точкой





