Learnly
Python с нуля/Глава 8/Урок 1

Типичные ошибки новичков

Типичные ошибки новичков

Это сборник самых частых ошибок, которые делают в начале. Прочитай, и избежишь недель разочарований.

1. Копирование кода без понимания

Симптом: Нашёл код в интернете, вставил, работает. Изменил что-то, сломалось. Не понимаешь почему.

Решение: Прежде чем вставить чужой код, прочитай его строка за строкой и объясни себе что делает каждая строка. Если не можешь объяснить, значит не понимаешь, и использовать опасно.

2. Не читать сообщения об ошибках

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

Решение: Ошибки, это подсказки. Python говорит тебе что пошло не так и где. Читай сверху вниз:

Traceback (most recent call last):
  File "script.py", line 5, in <module>
    result = 10 / value
ZeroDivisionError: division by zero

Здесь написано: в файле script.py, строка 5, попытка делить на ноль.

3. Переменные с именами x, a, b

# Плохо, через неделю не вспомнишь что это
x = 1500
y = 3
z = x * y

# Хорошо, читается как текст
price = 1500
quantity = 3
total = price * quantity

Называй переменные так, чтобы код читался как предложение.

4. Слишком длинные функции

# Плохо, функция делает 10 разных вещей
def process():
    # ... 100 строк кода ...

# Хорошо, каждая функция делает одно
def load_data(): ...
def clean_data(): ...
def analyze_data(): ...
def save_report(): ...

Функция должна помещаться на экране. Если нет, раздели.

5. Не проверять входные данные

# Плохо, упадёт если список пустой
def average(numbers):
    return sum(numbers) / len(numbers)

# Хорошо, защита от пустого списка
def average(numbers):
    if not numbers:
        return 0
    return sum(numbers) / len(numbers)

6. Пытаться написать всё сразу

Симптом: Начинаешь писать большую программу сразу, застреваешь, бросаешь.

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

7. Не пользоваться print() для отладки

Когда что-то не работает, добавляй print() чтобы видеть что происходит:

def process_users(users):
    result = []
    for user in users:
        print(f"Обрабатываю: {user}")  # временный debug print
        if user["active"]:
            result.append(user["name"])
    return result

После отладки убери лишние print.

💡 Главная мысль: Большинство ошибок новичков, не технические, а методологические. Пиши понятный код, читай ошибки, разбивай задачи на маленькие части.