Если у вас нет этих ошибок при старте в Python, возьмите с полки пирожок. А если есть — прочитайте эту статью и тоже возьмите. Пирожок — в конце статьи.
Неправильные отступы
Самая частая ошибка начинающих программистов на Python — неправильные отступы. Дело в том, что в Python с помощью отступов определяется, что к чему относится.
Например, вот два примера циклов, которые различаются одним отступом, но после первого мы увидим 11 сообщений, а после второго — 20:
# 11 сообщений
for i in range(10):
print(i * i)
print('Цикл закончился')
# 20 сообщений
for i in range(10):
print(i * i)
print('Цикл закончился')
Ещё ошибка — вообще забыть про отступы и писать код без них. В этом случае компьютер даже не запустит программу и сразу выдаст ошибку.
В большинстве других языков такой проблемы нет, можно ставить в коде сколько угодно табов и пробелов, потому что вместо пробелов и табов там фигурные скобки. Например, вот рабочий код на JavaScript:
// обработчик нажатий на экранную клавиатуру
document.getElementById("keyboard-cont").addEventListener("click", (e) => {
// получаем нажатый элемент
const target = e.target;
// если нажали не на нашу клавиатуру — выходим из обработчика
if (!target.classList.contains("keyboard-button")) {
return
}
// получаем текст нажатой кнопки
let key = target.textContent;
// имитируем нажатие этой кнопки на настоящей клавиатуре
document.dispatchEvent(new KeyboardEvent("keydown", {'key': key}))
})
А вот тот же самый код, но записанный без отступов, — и он тоже будет работать:
document.getElementById("keyboard-cont").addEventListener("click", (e) => {const target = e.target; if (!target.classList.contains("keyboard-button")) {return}let key = target.textContent;document.dispatchEvent(new KeyboardEvent("keydown", {'key': key}))})
Нет двоеточия
Во многих языках после объявления циклов или функций сразу идут скобки, в которых пишется нужный код. В Python в этих случаях нужно ещё поставить двоеточие — без него мы получим ошибку, код не запустится.
Это простая ошибка, которую легко исправить, но про неё часто забывают, поэтому многие инструменты разработки сами сообщают, когда пропущено двоеточие:
Точка с запятой
Эта ошибка — противоположная предыдущей: начинающие программисты часто ставят точку с запятой после каждой команды, но в Python она не нужна.
Это настолько частая ошибка, что некоторые интерпретаторы уже на неё не ругаются, а выполняют код так, будто точек с запятой там нет. Но в системах со строгими требованиями к коду такое не пройдёт: компьютер остановит программу и не запустится, пока программист не уберёт точки с запятой после команд.
Вызов или объявление функций без скобок
У функций бывают аргументы — это то, что в явном виде попадает в обработку внутрь функции. Например, функция str(x)
переводит в строку значение переменной x, при этом x — это аргумент функции. Если мы объявляем функцию с аргументами, то указываем их в скобках, тут пока всё в порядке.
Но бывает так, что нам нужна функция без аргументов — она работает со своими внутренними командами и значениями. Частая ошибка здесь — объявление функции без скобок. Мол, если нет аргументов, то и скобки не нужны:
В таких случаях компьютер сразу ругается на неправильный синтаксис: если объявлена функция, то у неё обязательно должны быть скобки, даже если аргументов нет. Добавим скобки, чтобы код был рабочий:
def square():
for i in range(10):
print(i * i)
print('Цикл закончился')
То же самое касается и вызова функции: даже если у неё нет аргументов, при вызове всё равно нужно поставить скобки. Если так не сделать, компьютер проигнорирует вызов и перейдёт к следующей команде:
Неправильный импорт и установка модулей
Напоследок будет ошибка, которую допускают все: и новички, и бывалые ребята. Она связана с тем, что не всегда название библиотеки совпадает с её именем при вызове или установке. Звучит странно, покажем на примере.
Самая популярная библиотека для создания телеграм-ботов — это pyTelegramBotAPI. Устанавливается на компьютер она такой командой:
pip install pytelegrambotapi
Но для подключения к проекту нам нужно использовать другое имя модуля:
import telebot
Если написать import pytelegrambotapi
— компьютер выдаст ошибку, потому что в этом случае имя вызова модуля и имя при установке не совпадают. Если у вас возникла такая ошибка — проверьте в документации, как подключать нужный вам модуль.