Python: Явное преобразование типов

В реальных программах часто возникает ситуация, когда данные одного типа нужно превратить в другой. Это особенно актуально, например, при обработке ввода пользователя или данных из веб-форм. Там всё приходит в виде строк, даже если вы ввели число.

Чтобы работать с такими значениями, их нужно явно преобразовать в нужный тип. Python предоставляет для этого простые и понятные инструменты.

🔢 Преобразование строки в число

Представим, что мы получили из формы строку '345', а нам нужно сложить это число с другим:

number = int('345')
print(number + 5)  # => 350

Функция int() получает строку и превращает её в целое число. Такая функция называется функцией приведения типа (casting function).

value = '0'
converted_value = int(value)
print(converted_value)  # => 0

print(int('10'))        # => 10
print(int(3.5))         # => 3  (дробная часть отбрасывается)

🧵 Преобразование в строку — str()

Если нужно превратить число или логическое значение в строку, используйте функцию str():

print(str(10))      # => '10'
print(str(True))    # => 'True'
print(str(3.5))     # => '3.5'

Это полезно, например, при формировании текстов, сообщений и вывода:

age = 42
print("Age: " + str(age))  # => Age: 42

🌊 Преобразование в число с плавающей точкой — float()

Если нужно число с десятичной точкой, используйте float():

print(float(5))     # => 5.0
print(float('2.7')) # => 2.7

🤖 Python иногда сам преобразует типы

В некоторых выражениях Python делает автоматическое приведение типов. Например, при сложении int и float он преобразует всё в float:

value = 3 + 1.2  # неявно выполняется float(3) + 1.2
print(value)     # => 4.2

Это удобно, но важно помнить: автоматические преобразования происходят только в ограниченных, строго определённых ситуациях. В большинстве случаев Python потребует явного преобразования — особенно при работе со строками.

Задание

Выведите на экран строку 2 times, полученную из числа 2.9 (хранится в переменной value) и строки times, используя преобразования типов и конкатенацию. Для этого нужно выполнить два преобразования: сначала в целое число, а затем в строку

2 times

Полезное

Как с вами связаться? 🙃

Команда проекта находится в телеграм-сообществе по ссылке https://ttttt.me/HexletLearningBot. Там можно задать любой вопрос и повлиять на проект

Упражнение не проходит проверку — что делать? 😶

Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник". Как правильно задать вопрос:

В моей среде код работает, а здесь нет 🤨

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя 🤔

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно 🙄

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются

Привет! Я Тота и моя задача помочь в обучении. Чтобы активировать меня, нужно зарегистрироваться или залогиниться, если у вас уже есть аккаунт

Loading...

Ваше упражнение проверяется по этим тестам

1from hexlet.test import expect_output
2
3
4def test(capsys):
5    expected = "2 times"
6    expect_output(capsys, expected)
7

Решение учителя откроется через:

20:00
waiting_clock