Ошибки данных в Python: IndexError, KeyError, ValueError, ZeroDivisionError
Код написан правильно, а данные подвели: индекса нет в списке, ключа нет в словаре, строку нельзя превратить в число, делитель оказался нулём. Такие ошибки чаще всего приходят от ввода пользователя и краевых случаев, которые не проверили заранее.
Свой трейсбек удобнее вставить в расшифровщик: он сам найдёт нужное сообщение и подставит имена из твоего кода в объяснение. Ниже — все сообщения семейства по порядку, у каждого постоянная ссылка.
IndexError: напечатай len(x) и индекс перед обращением. Нумерация начинается с нуля, поэтому range(len(x)) уже доходит до последнего элемента, а x[len(x)] всегда за границей.
KeyError: проверь ключ через in или возьми dict.get(key, default). Ключи 1 и "1" разные, как и "Москва" с пробелом на конце и без.
ValueError при int() и float(): очисти строку через strip(), замени запятую на точку, проверь пустой ввод. Само сообщение показывает точное значение, которое не удалось преобразовать.
ZeroDivisionError: проверяй делитель заранее. Чаще всего ноль приходит из среднего по пустому списку или из счётчика, который никогда не увеличился.
Как читать трейсбек
Читай снизу вверх: последняя строка называет ошибку и объясняет её текстом.
Строка выше с File "...", line N показывает, где Python остановился. Для SyntaxError причина часто на строке выше указанной.
Стрелка ^ под кодом отмечает место, где разбор сломался.