Переменные
Переменная — это именованная ячейка для хранения данных.
В Python переменная создаётся в момент присваивания значения через знак
=:
name = "Анна"
age = 28
height = 1.75
is_admin = True
Чтобы прочитать значение, обратитесь к переменной по имени. Функция
print() выведет его:
print(name) # Анна
print(age) # 28
Правила именования
- Имя состоит из букв, цифр и знака
_, но не может начинаться с цифры. - Регистр важен:
nameиName— разные переменные. - Нельзя использовать ключевые слова Python (
if,for,class,True...). - Стиль —
snake_case:user_name,total_price, а неuserName.
# Хорошо
user_name = "Анна"
total_price = 1500
# Плохо (так делать не надо)
u = "Анна"
tp = 1500
Динамическая типизация
В Python не нужно заранее объявлять тип переменной — тип определяется по значению и может меняться в ходе программы:
x = 10 # x — целое число
x = "десять" # теперь x — строка
x = [1, 2, 3] # теперь x — список
Это удобно, но и опасно: можно случайно записать в переменную значение другого типа и сломать дальнейший код. Поэтому в больших проектах типы указывают явно через аннотации (подробнее — в главе про функции):
age: int = 28
name: str = "Анна"
Аннотации не ограничивают значение, но помогают редактору и другим разработчикам понять намерение.
Функция type()
Чтобы узнать тип значения, используют встроенную функцию type():
print(type(42)) # <class 'int'>
print(type("Привет")) # <class 'str'>
print(type(3.14)) # <class 'float'>
print(type(True)) # <class 'bool'>
Числа: int и float
Python различает два основных числовых типа:
int— целые числа (без точки):42,-7,0.float— числа с плавающей точкой:3.14,-0.001,2.0.
population = 8_000_000_000 # подчёркивания для читаемости (Python 3.6+)
price = 19.99
negative = -273.15
Арифметика
| Оператор | Операция | Пример | Результат |
|---|---|---|---|
+ | сложение | 7 + 3 | 10 |
- | вычитание | 7 - 3 | 4 |
* | умножение | 7 * 3 | 21 |
/ | деление | 7 / 2 | 3.5 |
// | целочисленное деление | 7 // 2 | 3 |
% | остаток от деления | 7 % 2 | 1 |
** | возведение в степень | 2 ** 10 | 1024 |
Важный нюанс: обычное деление / всегда даёт float,
даже если делится нацело:
result = 10 / 2
print(result) # 5.0
print(type(result)) # <class 'float'>
Строки: str
Строка — последовательность символов. Создаётся в одинарных, двойных или тройных кавычках:
single = 'Привет'
double = "Мир"
# тройные кавычки — для многострочного текста
poem = '''Я выучу Python
по вечерам.'''
Длина строки — через функцию len():
print(len("Привет")) # 6
Склеивание и повторение
first = "Анна"
last = "Смирнова"
full = first + " " + last # "Анна Смирнова"
line = "-" * 20 # --------------------
Индексация и срезы
К символу строки обращаются по индексу (с 0). Отрицательные индексы отсчитываются с конца:
word = "Python"
print(word[0]) # P — первый символ
print(word[-1]) # n — последний
print(word[0:3]) # Pyt — символы с 0 по 2 (3 не входит)
print(word[:3]) # Pyt — с начала до 3
print(word[3:]) # hon — с 3 до конца
Строки неизменяемы: изменить символ по индексу нельзя.
word[0] = "J" вызовет ошибку. Вместо этого создают новую строку.
Булевы значения: bool
Тип bool имеет всего два значения — True
(истина) и False (ложь). Обратите внимание на заглавную букву —
в Python это важно.
is_active = True
is_admin = False
print(type(is_active)) # <class 'bool'>
Булевы значения чаще всего появляются как результат сравнения:
age = 28
print(age >= 18) # True — совершеннолетний
print(age == 18) # False — равенство (двойное равно!)
print(age != 30) # True — неравенство
Специальное значение None
None — «ничего», отсутствие значения. Аналог null
в других языках. Используется, когда переменная есть, но значения у неё пока
нет:
result = None
print(result) # None
print(type(result)) # <class 'NoneType'>
# Проверка на None — только через is, не через ==
if result is None:
print("Значение ещё не задано")
Конвертация типов
Один тип можно преобразовать в другой встроенными функциями:
int(), float(), str(),
bool().
# str -> int
age_str = "28"
age = int(age_str)
print(age + 1) # 29
# int -> str (нужно, например, для склейки со строкой)
count = 5
message = "Всего товаров: " + str(count)
# int -> float
price = float(100)
print(price) # 100.0
# float -> int (дробная часть отбрасывается, без округления!)
print(int(3.9)) # 3
Что считается ложью (falsy)
При преобразовании в bool следующие значения дают
False: 0, 0.0, ""
(пустая строка), None, пустые коллекции. Всё остальное —
True:
print(bool(0)) # False
print(bool("")) # False
print(bool("text")) # True
print(bool(42)) # True
Ввод данных: input()
Функция input() останавливает программу и ждёт, пока
пользователь наберёт текст и нажмёт Enter. Аргумент — приглашение, которое
показывается перед вводом:
name = input("Как вас зовут? ")
print(f"Привет, {name}!")
Главное, что нужно запомнить: input() всегда
возвращает строку — даже если пользователь ввёл число. Поэтому
считать с результатом «как с числом» без конвертации не получится:
age = input("Ваш возраст: ") # пользователь ввёл 28
print(type(age)) # <class 'str'> — это строка!
# print(age + 1) # TypeError: can only concatenate str (not "int") to str
# Правильно — сразу приводим к нужному типу
age = int(input("Ваш возраст: "))
print(age + 1) # 29
Это ошибка №1 у начинающих: программа «странно себя ведёт» просто потому,
что "28" и 28 — разные вещи. Для дробных чисел
используйте float():
height = float(input("Ваш рост в метрах: ")) # 1.75
print(f"Через год вы будете ростом {height} м")
Если пользователь введёт не число, int() выбросит
ValueError и программа упадёт. Как это перехватить — разберём
в главе 8.
Кейс из реального проекта: разбор ответа API
Часто данные приходят строками (например, из HTTP-ответа или формы), а считать нужно числа. Здесь и нужна конвертация:
# Пришёл ответ от сервера в виде строк
price_str = "199.50"
quantity_str = "3"
# Превращаем строки в числа и считаем
price = float(price_str)
quantity = int(quantity_str)
total = price * quantity
print("Итого:", total, "руб.")
# Итого: 598.5 руб.
В реальном проекте значения «снаружи» (от пользователя, из сети, из файла) почти всегда нужно приводить к нужному типу и проверять. Подробнее об обработке ошибок — в главе 8.
Типичные ошибки
1. Сравнение через одно =
age = 28
# if age = 18: # Ошибка! = это присваивание, а не сравнение
if age == 18: # правильно
print("Ровно 18")
2. Сложение числа и строки
age = 28
# print("Мне " + age + " лет") # TypeError: can only concatenate str
print("Мне " + str(age) + " лет") # правильно
В следующей главе мы изучим f-строки, которые решают эту проблему элегантнее.
3. Путаница int() и round()
print(int(2.9)) # 2 — просто отбрасывает дробь
print(round(2.9)) # 3 — математическое округление
Практика
- Объявите переменные с именем, возрастом и ростом. Выведите их через
print(). - Посчитайте площадь прямоугольника со сторонами
4.5и3и выведите результат. - Дана строка
"123". Превратите её в число, умножьте на 2 и выведите. - Строку
"Python"выведите задом наперёд через срез[::-1]. - Проверьте через
type(), какой тип у выражения10 / 2и10 // 2. - Спросите у пользователя два числа через
input(), сложите их и выведите сумму. Не забудьте проint().
Итог
Мы изучили переменные, динамическую типизацию, основные типы данных
(int, float, str, bool,
None), арифметику, конвертацию типов и ввод данных через
input(). Запомните главное: input() всегда отдаёт
строку. В следующей главе разберём операторы подробнее и научимся красиво
форматировать строки через f-strings.
Комментарии 0
Пока нет комментариев. Станьте первым!