Подписанные значения разных типов собираются в понятный расчёт Python
Программирование

Переменные и типы данных в Python

Разбираем имена, числа, строки, bool и None на одном расчёте: как Python хранит значения, преобразует ввод и сообщает о несовместимых типах.

Содержание

Переменная в Python — это имя, связанное со значением. Значение имеет тип: число ведёт себя иначе, чем текст, а логическое значение отвечает на вопрос «истина или ложь». Тип определяет доступные операции и помогает интерпретатору обнаружить бессмысленное действие. Примеры предполагают, что вы уже установили Python и умеете запускать файл.

Разберём это на расчёте заказа. Программа будет хранить цену, количество, признак скидки и подпись товара, а затем построит понятный результат.

Присваивание связывает имя со значением

Создайте файл order.py в каталоге урока. Первый вариант только сохраняет четыре значения и выводит их; он не обращается к файлам или сети.

product_name = "Кабель"
unit_price = 350.0
quantity = 3
discount_enabled = True

print(product_name, unit_price, quantity, discount_enabled)

Знак = вычисляет правую часть и связывает результат с именем слева. Подчёркивания разделяют слова в имени — это распространённый стиль Python. При запуске программа выведет четыре значения в одной строке.

Имя должно начинаться с буквы или подчёркивания, не может содержать пробел и не должно совпадать с ключевым словом языка. unit_price описывает смысл лучше, чем x: читателю не приходится восстанавливать назначение по соседним строкам.

Основные типы решают разные задачи

В примере используются четыре встроенных типа:

  • str хранит текст, например название товара;
  • int хранит целое число без дробной части;
  • float хранит число с плавающей точкой;
  • bool хранит одно из двух значений: True или False.

Кавычки создают строку. Поэтому "350" — текст из трёх символов, а 350 — целое число. Точка в 350.0 создаёт float. В Python логические значения пишутся с заглавной буквы.

Узнать тип во время обучения помогает функция type. Добавьте две строки в конец файла и снова запустите его:

print(type(product_name))
print(type(quantity))

Ожидаются обозначения <class 'str'> и <class 'int'>. Слово class здесь указывает на класс объекта — описание его поведения. Детально классы понадобятся позже; сейчас достаточно видеть разницу типов. type ничего не меняет в значении.

Арифметика должна соответствовать смыслу

Рассчитаем стоимость до скидки. Замените вывод исходных значений следующим фрагментом или добавьте его ниже:

subtotal = unit_price * quantity
print(f"{product_name}: {subtotal} руб.")

Python умножает float на int и получает float, поэтому вывод содержит 1050.0. F-строка подставляет выражения из фигурных скобок в текст. Этот формат удобнее цепочки сложений строк и сразу показывает, где находятся данные.

Для учебного примера float понятен, но для точных денежных расчётов двоичное представление дроби может дать округление. В платёжных системах обычно хранят минимальные целые единицы либо используют Decimal из стандартной библиотеки и заранее задают правила округления.

Операторы / и // различаются. / выполняет обычное деление и возвращает float; // выполняет деление с округлением вниз. Остаток возвращает %. Выбор зависит от задачи, а не от желания убрать дробную часть.

Ввод пользователя сначала является текстом

Функция input печатает приглашение и ждёт Enter. Даже если человек вводит цифры, результат имеет тип str. Чтобы умножить количество, строку нужно явно преобразовать.

Следующий вариант запросит количество при каждом запуске. Выполняйте его в терминале, где виден ввод и вывод:

quantity_text = input("Количество: ")
quantity = int(quantity_text)

subtotal = unit_price * quantity
print(f"Сумма: {subtotal} руб.")

Если ввести 4, int создаст целое число 4, и сумма станет 1400.0. Если ввести четыре или 4.5, преобразование завершится ValueError: строка не соответствует записи целого числа. Это ожидаемая граница программы, которую позже обработаем через исключение и понятное сообщение.

Не применяйте int к любому вводу автоматически. Номер телефона, почтовый индекс и артикул могут состоять из цифр, но являются идентификаторами: над ними не выполняют арифметику, а ведущие нули важны. Для них подходит строка.

Сравнение возвращает bool

Логическое значение появляется не только как True или False, но и как результат сравнения. Добавьте проверку минимального количества:

minimum_quantity = 2
enough_items = quantity >= minimum_quantity

print(f"Минимум набран: {enough_items}")

Оператор >= отвечает на вопрос «левое значение больше или равно правому». При количестве 4 переменная enough_items получит True, при количестве 1 — False. Пока программа только печатает ответ; в следующем уроке условие выберет разные действия.

Для равенства используется ==, потому что одиночный = уже занят присваиванием. Неравенство записывается !=, а строгие сравнения — < и >.

None обозначает отсутствие значения

Иногда данные ещё не получены или результата нет. Для этого существует специальный объект None. Он отличается от нуля, пустой строки и False, поскольку те могут быть допустимыми значениями.

promocode = None
print(promocode is None)

Программа выведет True. Для проверки None используют is None, а не пытаются складывать его со строкой или числом. Позже значение можно заменить реальным промокодом.

Изменение типа имени допустимо, но запутывает

Python позволяет сначала связать quantity с числом, а затем с текстом. Это не делает программу понятнее. Если смысл изменился, используйте другое имя, например quantity_text для ввода и quantity для проверенного числа.

Аннотация quantity: int = 3 документирует ожидаемый тип и помогает редактору или отдельному анализатору найти несоответствие. Сам интерпретатор обычно не запрещает позже присвоить строку, поэтому аннотация не заменяет проверку ввода и тесты.

Следующий урок — условия if, elif и else, где логические значения начнут управлять действиями. Подробное введение в числа, строки и списки есть в официальном учебнике Python.

Рекламное местоВаша компания здесьРазместить рекламу

Самопроверка

Проверьте, что материал усвоен

Ответьте на все вопросы. Результат сохранится только в этом браузере и будет учтён в статистике прочитанных материалов.

01Какой тип у результата 7 / 2 в Python 3?
02Что возвращает input?
03Для чего используют None?

Разбираем коротко

Частые вопросы

Нужно ли заранее объявлять тип переменной в Python?

В обычном коде тип связан с присвоенным объектом и отдельно объявлять его не требуется. Аннотации типов можно добавить для документации и статической проверки, но интерпретатор не превращает их автоматически в запрет других значений.

Почему input всегда возвращает строку?

Терминал передаёт введённые символы как текст. Программа сама решает, нужно ли интерпретировать их как целое число, дробь, дату или оставить строкой.

Чем None отличается от нуля и пустой строки?

None обозначает отсутствие значения. Ноль является числом, а пустая строка — существующим текстовым значением нулевой длины.