Переменные, int, float, str, bool и списки на примере языка Python
Величина, переменная, значение
В программировании величиной называют поименованный объект, хранящий данные, с которыми работает программа. Величина характеризуется именем (идентификатором), значением (конкретными данными, которые она хранит в данный момент) и типом (множеством допустимых значений и операций над ними). Величина, значение которой может изменяться в ходе выполнения программы, называется переменной; величина с фиксированным, неизменным значением — константой.
В языке Python переменная создаётся в момент первого присваивания ей значения и не требует предварительного объявления типа — тип переменной определяется автоматически по присвоенному значению (это называется динамической типизацией) и может измениться при повторном присваивании переменной значения другого типа:
x = 5
print(type(x))
x = "теперь строка"
print(type(x))
Понятие типа данных
Тип данных определяет: какие значения может принимать величина, сколько памяти отводится под её хранение и какие операции к ней применимы. Использование данных неподходящего типа (например, попытка сложить число со строкой без явного преобразования) в Python приводит к ошибке времени выполнения (TypeError). Базовые (простые, скалярные) типы данных Python, которые необходимо знать для решения задач ЕГЭ по программированию: int (целые числа), float (вещественные числа), str (строки, текст), bool (логический тип).
Целочисленный тип int
Тип int хранит целые числа — как положительные, так и отрицательные, а также ноль — без ограничения разрядности (в отличие от многих других языков программирования, где размер целого числа ограничен фиксированным количеством бит, Python может хранить сколь угодно большие целые числа, ограниченные только объёмом доступной памяти). Над значениями int определены арифметические операции: сложение (+), вычитание (-), умножение (*), целочисленное деление (//), остаток от деления (%) и возведение в степень (**).
a = 17
b = 5
print(a + b) # 22
print(a — b) # 12
print(a * b) # 85
print(a // b) # 3 (целая часть от деления)
print(a % b) # 2 (остаток от деления)
print(a ** b) # 1419857 (17 в степени 5)
Вещественный тип float
Тип float хранит вещественные (дробные) числа с плавающей точкой. Важная особенность: результат обычного деления двух чисел оператором / в Python всегда имеет тип float, даже если оба операнда — целые числа и делятся друг на друга без остатка. Из-за особенностей внутреннего двоичного представления вещественных чисел в компьютере (не все десятичные дроби представимы точно в двоичной системе) сравнивать значения float на точное равенство (==) считается плохой практикой — вместо этого сравнивают модуль их разности с малой допустимой погрешностью.
c = 7 / 2
print(c) # 3.5
print(type(c)) # <class 'float'>
d = 10 / 5
print(d) # 2.0, а не 2 — тип всё равно float
print(0.1 + 0.2 == 0.3) # False из-за погрешности округления
print(abs(0.1 + 0.2 — 0.3) < 1e-9) # True — правильное сравнение
Строковый тип str
Тип str хранит последовательности символов (текст), заключённые в одинарные или двойные кавычки. Строки в Python — неизменяемый (immutable) тип: изменить отдельный символ существующей строки напрямую нельзя, можно лишь создать новую строку. К строкам применимы операция конкатенации (склеивания, оператор +), повторения (оператор *), индексации (обращение к отдельному символу по номеру позиции, начиная с 0) и срезов (извлечение подстроки).
s1 = "Привет"
s2 = "мир"
greeting = s1 + ", " + s2 + "!"
print(greeting) # Привет, мир!
print(len(greeting)) # длина строки в символах
print(greeting[0]) # первый символ: 'П'
print(greeting[-1]) # последний символ: '!'
print(greeting[0:6]) # срез: 'Привет'
print("ля" * 3) # повторение: 'ляляля'
Для преобразования числа в строку используется функция str(), а для обратного преобразования строки, содержащей запись числа, в число — функции int() (целое число) или float() (вещественное число).
Логический тип bool
Тип bool имеет ровно два значения: True (истина) и False (ложь) — результат вычисления логических выражений и операций сравнения (==, !=, <, >, <=, >=), а также логических операций and (И), or (ИЛИ), not (НЕ). Важная деталь для ЕГЭ: в Python тип bool фактически является подтипом int, где True эквивалентно 1, а False — 0, поэтому логические значения можно использовать в арифметических выражениях.
a = 10
b = 20
result = a < b
print(result) # True
print(type(result)) # <class 'bool'>
print(True + True) # 2 (сложение как чисел 1+1)
print(int(False)) # 0
x = 7
is_even = (x % 2 == 0)
print(is_even) # False
Списки (list) — структурированный тип данных
В отличие от простых (скалярных) типов, хранящих одно значение, список (list) — структурированный тип данных, способный хранить упорядоченную последовательность из произвольного числа элементов, причём элементы могут быть разных типов (в том числе другими списками). Список в Python создаётся в квадратных скобках, элементы разделяются запятыми; в отличие от строк, списки — изменяемый (mutable) тип: элементы можно менять, добавлять и удалять после создания списка.
numbers = [10, 25, 3, 47, 8]
print(numbers[0]) # первый элемент: 10
print(len(numbers)) # длина списка: 5
numbers.append(100) # добавление элемента в конец
numbers[1] = 99 # изменение второго элемента
print(numbers) # [10, 99, 3, 47, 8, 100]
print(sum(numbers)) # сумма всех элементов
print(max(numbers)) # максимальный элемент
print(sorted(numbers)) # новый отсортированный список
Списки чрезвычайно широко используются в задачах ЕГЭ на программирование: для хранения последовательности введённых чисел, результатов промежуточных вычислений, таблиц значений и т.п. Перебор элементов списка обычно выполняется циклом for, что подробно рассматривается в отдельной теме о циклах.
Сводная таблица базовых типов данных Python
| Тип | Назначение | Пример значения | Изменяемый? |
|---|---|---|---|
int | целые числа | 42, -7, 0 | нет |
float | вещественные числа | 3.14, -0.5 | нет |
str | строки (текст) | "информатика" | нет |
bool | логические значения | True, False | нет |
list | упорядоченный набор элементов | [1, 2, 3] | да |
Функция type() и преобразование типов
Определить текущий тип значения переменной позволяет встроенная функция type(). Явное преобразование значения из одного типа в другой (приведение типов) выполняется функциями int(), float(), str(), bool() — например, int("25") превращает строку "25" в целое число 25, а str(25) — наоборот, число 25 в строку "25". Попытка преобразовать в число строку, не являющуюся корректной числовой записью (например, int("пять")), вызывает ошибку ValueError.
Пример: работа с разными типами данных в одной программе
Задача. Считать имя, возраст (целое число) и рост в метрах (вещественное число), затем вывести сообщение о том, совершеннолетний ли человек.
name = input("Введите имя: ") # str
age = int(input("Введите возраст: ")) # int
height = float(input("Введите рост (м): ")) # float
is_adult = age >= 18 # bool
print(name + ", рост " + str(height) + " м")
if is_adult:
print("Совершеннолетний(яя)")
else:
print("Несовершеннолетний(яя)")
Обратите внимание: функция input() всегда возвращает строку (str), поэтому для получения числовых значений её результат нужно явно преобразовать функциями int() или float() — это одна из самых частых ошибок начинающих программистов.
Типичные ошибки
Самая распространённая ошибка — забыть преобразовать результат input() в число перед арифметическими операциями, из-за чего вместо сложения чисел происходит конкатенация строк (например, "3"+"5" даёт "35", а не 8). Вторая ошибка — сравнивать вещественные числа (float) на точное равенство оператором ==, что из-за погрешности представления дробей в двоичном виде может дать неожиданный результат. Третья ошибка — путать оператор целочисленного деления // с обычным делением / (результаты и типы результатов различаются: // даёт int при целых операндах и округляет вниз, / всегда даёт float).
Краткий словарь терминов
Величина — поименованный объект, хранящий данные определённого типа.
Переменная — величина, значение которой может изменяться в ходе выполнения программы.
Тип данных — множество допустимых значений величины и операций, применимых к ним.
Динамическая типизация — определение типа переменной автоматически по присвоенному значению, без явного объявления.
Список (list) — структурированный изменяемый тип данных, хранящий упорядоченную последовательность элементов.
Приведение типов — явное преобразование значения одного типа в значение другого типа.
Неизменяемый (immutable) тип — тип, значения которого нельзя изменить после создания (например, str).
Заключение
Понимание базовых типов данных (int, float, str, bool) и структурированного типа list — необходимая основа для написания любой программы на Python: от этого зависит, какие операции допустимы над величинами и как избежать ошибок при вводе и обработке данных. Вооружившись этим фундаментом, мы переходим к следующей теме — построению линейных и разветвляющихся программ, где научимся комбинировать типы данных с условными конструкциями для решения практических задач.



