Топ-5 ошибок с переменными и типами данных

Топ-5 ошибок с переменными и типами данных Переменные и типы данных

Привет! Ошибки — это нормально. Даже опытные разработчики их допускают. Но есть ошибки, которые новички совершают особенно часто. Хорошая новость: их можно легко избежать, если знать о них заранее.

В этой статье разберём 5 самых частых ошибок с переменными и типами данных в Python.

Что нужно знать перед началом

Для этого урока тебе понадобится:

  • Установленный 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 == — путаница
  • Неправильные имена
  • Ошибки преобразования типов
  • Изменяемые типы в цепочке

КВИЗ

Что дальше?

Оцените статью
IMI-DS - PYTHON LERNEN
Содержание
Оглавление ×