Справочник · ошибки Python
ValueError
Тип подходит, а значение — нет. Чаще всего так бывает, когда int() получает текст, в котором не число.
Python пишет ошибку в последней строке сообщения: сначала название, после двоеточия — подробности. Найди своё сообщение ниже — рядом объяснение простыми словами и что исправить.
Значение не делится на части
ValueError: too many values to unpack (expected 2)
- Что случилось
- Значение не раскладывается на столько переменных, сколько записано слева.
- Почему так бывает
- Цикл по самому словарю даёт только ключи, а не пары. Пары даёт метод items.
- Как исправить
- Пиши for ключ, значение in словарь.items().
Разбираем в уроке 6.2 «Обход словаря».
Это не число
number = int("привет")Python сообщает об ошибке
ValueError: invalid literal for int() with base 10: 'привет'
- Что случилось
- int() превращает в число только цифры, а пришло что-то другое.
- Почему так бывает
- Например, пустая строка или слово.
- Как исправить
- Проверь, что вводишь цифры.
Разбираем в уроке 1.5 «Число и текст — превращения».
Нечего убирать
ValueError: list.remove(x): x not in list
- Что случилось
- Такого элемента нет в списке.
- Почему так бывает
- Метод remove убирает элемент по значению, а значения в списке нет. Возможно, опечатка или он уже удалён.
- Как исправить
- Проверь значение. Перед remove можно проверить через in.
Разбираем в уроке 4.2 «Меняем список».
Файл уже закрыт
ValueError: I/O operation on closed file
- Что случилось
- Ты работаешь с файлом после того, как блок with закончился.
- Почему так бывает
- Блок with закрывает файл сам, когда его строчки заканчиваются. Дальше файл недоступен.
- Как исправить
- Всё, что нужно сделать с файлом, пиши внутри блока with, с отступом.
Разбираем в уроке 8.1 «Читаем файл».
Функция остановила программу
def set_age(age):
if age < 0:
raise ValueError("Возраст не бывает отрицательным")
return age
print(set_age(-5))Python сообщает об ошибке
ValueError: Возраст не бывает отрицательным
- Что случилось
- Сработал raise:
Возраст не бывает отрицательным. - Почему так бывает
- Так функция сообщает, что получила неподходящие данные. Команда raise сама поднимает ошибку.
- Как исправить
- Передай подходящие данные или поймай эту ошибку через try и except ValueError.
Разбираем в уроке 7.3 «Защита и свои ошибки».
Другие ошибки
SyntaxErrorNameErrorAttributeErrorTypeErrorIndentationErrorTabErrorZeroDivisionErrorIndexErrorKeyErrorUnboundLocalErrorRecursionErrorFileNotFoundErrorUnsupportedOperationUnicodeDecodeErrorModuleNotFoundErrorJSONDecodeErrorEOFErrorAssertionErrorValidationErrorMissingSchemaConnectionErrorReadTimeoutHTTPErrorOperationalErrorIntegrityErrorProgrammingErrorNotImplementedError