Привет! Ошибки — это нормально. Даже опытные разработчики их допускают. Но есть ошибки, которые новички совершают особенно часто. Хорошая новость: их можно легко избежать, если знать о них заранее.
В этой статье разберём 5 самых частых ошибок с переменными и типами данных в Python.
- Что нужно знать перед началом
- Основная часть
- Ошибка 1: NameError — переменная не определена
- Ошибка 2: Путаница между = и ==
- Ошибка 3: Неправильное именование переменных
- Ошибка 4: Ошибки преобразования типов
- Ошибка 5: Изменяемые типы в цепочке присваиваний
- Задачи для закрепления
- Нюансы и подводные камни
- Python чувствителен к регистру
- Ошибки с int() для строк с пробелами
- Деление на ноль
- Частые ошибки и как их избежать
- Ошибка 1: Игнорирование регистра
- Ошибка 2: Непреобразование типа
- Ошибка 3: Путаница с изменяемыми типами
- Шпаргалка
- Заключение / Выводы
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный Python
- Базовое понимание переменных, типов данных и присваивания
Совет: Если ты уже сталкивался с этими ошибками — не расстраивайся. Это часть пути. Главное — понимать, почему они возникают.
Основная часть
Ошибка 1: NameError — переменная не определена
Что происходит:
print(age) # NameError: name 'age' is not definedПочему: Ты пытаешься использовать переменную до того, как её создал.
Как исправить: Сначала создай переменную.
age = 25
print(age) # 25Совет: Всегда проверяй, что переменная определена до её использования. В больших программах это особенно важно.
Ошибка 2: Путаница между = и ==
Что происходит:
age = 18
if age = 18: # SyntaxError: invalid syntax
print("18 лет")Почему: = — это присваивание. == — это сравнение. Новички часто путают их в условиях.
Как исправить: Используй == для сравнения.
age = 18
if age == 18:
print("18 лет") # 18 летСовет: Если ты видишь
SyntaxErrorв строке сif— почти всегда дело в=вместо==.
Ошибка 3: Неправильное именование переменных
Что происходит:
user name = "Анна" # SyntaxError: invalid syntax
1user = "Анна" # SyntaxError: invalid decimal literal
my-var = 10 # SyntaxError: cannot assign to expression hereПочему: В Python есть строгие правила именования.
Как исправить: Используй snake_case.
user_name = "Анна"
user1 = "Анна"
my_var = 10Совет: Имя переменной может содержать буквы, цифры (не в начале) и подчёркивание
_. Никаких пробелов, дефисов, спецсимволов.
Ошибка 4: Ошибки преобразования типов
Что происходит:
age = input("Сколько тебе лет? ") # "25"
print(age + 5) # TypeError: can only concatenate str to strПочему: input() возвращает строку. Ты пытаешься сложить строку и число.
Как исправить: Преобразуй строку в число.
age = int(input("Сколько тебе лет? "))
print(age + 5) # 30Совет: Всегда помни, что
input()возвращает строку. Если тебе нужно число — используйint()илиfloat().
Ошибка 5: Изменяемые типы в цепочке присваиваний
Что происходит:
a = b = c = []
a.append(1)
print(a, b, c) # [1] [1] [1] — неожиданно для многихПочему: Все переменные ссылаются на один список.
Как исправить: Создавай отдельные списки.
a = []
b = []
c = []
# или
a, b, c = [], [], []Совет: Для неизменяемых типов (int, str) цепочка безопасна. Для изменяемых (list, dict) — нет.
Задачи для закрепления
Задача 1. Найди ошибку в коде:
name = "Анна"
print(Name) # Что будет?Задача 2. Что не так?
if x = 10:
print("x равен 10")Задача 3. Что выведет код?
x = y = z = [1, 2, 3]
z.append(4)
print(x)Задача 4. Как исправить?
age = input("Введите возраст: ")
print("Через 10 лет вам будет", age + 10)Задача 5. Почему код вызывает ошибку?
my-name = "Python"Ответы:
Задача 1
# NameError: name 'Name' is not defined
# Python чувствителен к регистру: name и Name — разные переменные.Задача 2
# Вместо = должно быть ==
if x == 10:
print("x равен 10")Задача 3
[1, 2, 3, 4] [1, 2, 3, 4] [1, 2, 3, 4]
# Все переменные ссылаются на один список.Задача 4
age = int(input("Введите возраст: "))
print("Через 10 лет вам будет", age + 10)Задача 5
# Дефис (-) не разрешён в именах переменных.
# Исправление: my_name = "Python"Нюансы и подводные камни
Python чувствителен к регистру
name = "Анна"
Name = "Алексей"
print(name, Name) # Анна Алексей
# name и Name — разные переменные!Ошибки с int() для строк с пробелами
print(int(" 25 ")) # 25 — пробелы игнорируются
print(int("25.5")) # ValueError — точка недопустимаДеление на ноль
x = 10
y = 0
print(x / y) # ZeroDivisionError: division by zeroЧастые ошибки и как их избежать
Ошибка 1: Игнорирование регистра
Всегда используй одинаковые имена. name и Name — это разные переменные.
Ошибка 2: Непреобразование типа
Если работаешь с числами от пользователя — всегда используй int() или float().
Ошибка 3: Путаница с изменяемыми типами
Для списков используй copy() или отдельное создание.
Шпаргалка
| Ошибка | Почему | Как исправить |
|---|---|---|
| NameError | Переменная не определена | Определи переменную |
= вместо == | Путаница присваивания и сравнения | Используй == |
| Неправильное имя | Спецсимволы, пробелы, цифры в начале | Используй snake_case |
| TypeError | Строка + число | Преобразуй тип |
| Изменяемый список | Все ссылаются на один объект | Создай копии |
Заключение / Выводы
Сегодня мы разобрали:
- NameError — переменная не определена
=vs==— путаница- Неправильные имена
- Ошибки преобразования типов
- Изменяемые типы в цепочке








