Преобразование типов: int(), str(), float()

Преобразование типов: int(), str(), float() Переменные и типы данных

Привет! Мы уже изучили с тобой, что в Python есть разные типы данных: числа (intfloat), строки (str), логический тип (bool). Но что делать, если нужно превратить один тип в другой? Например, пользователь ввёл число в виде строки, а нам нужно его сложить с другим числом? Или наоборот — соединить число с текстом?

В этой статье мы разберём:

  • Зачем нужно преобразование типов
  • Функции int()str()float()
  • Как безопасно преобразовывать данные
  • Частые ошибки и как их избежать

Что нужно знать перед началом

Для этого урока тебе понадобится:

  • Установленный Python
  • Базовое понимание переменных, чисел и строк (статьи 2–4)

Совет: Открой VS Code и повторяй примеры. Преобразование типов — очень частый приём в реальных программах.

Основная часть

Зачем нужно преобразование типов

Представь, что ты пишешь программу, которая спрашивает у пользователя его возраст. Пользователь вводит 25, но Python получает это значение как строку ("25"). Если ты попробуешь прибавить к этому числу 1, получишь ошибку:

age = input("Сколько тебе лет? ")  # пользователь вводит 25
print(age + 1)  # Ошибка! str + int нельзя

Чтобы это исправить, нужно преобразовать строку в число.

Функция int() — преобразование в целое число

int() превращает в целое число:

  • Дробные числа (float) → целые (отбрасывается дробная часть)
  • Строки с числами ("5""123") → целые числа
  • Логические значения: True → 1False → 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.0False → 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"))   # 3

6. Шпаргалка

Что нужноКак пишется
Преобразовать в целое числоint(x)
Преобразовать в дробное числоfloat(x)
Преобразовать в строкуstr(x)
Получить тип переменнойtype(x)
Проверить, является ли строка целым числомs.isdigit()
Округлить числоround(x, n)

Заключение / Выводы

Сегодня мы узнали:

  • int() — превращает в целое число
  • float() — превращает в дробное число
  • str() — превращает в строку
  • Преобразование типов нужно для обработки пользовательского ввода
  • Частые ошибки: забыл преобразовать, путаница между типами, проблемы с точкой

КВИЗ

Что дальше?

Оцените статью
IMI-DS - PYTHON LERNEN
Содержание
Оглавление ×