В Python ValueError — это тип ошибки, который возникает, когда функция получает аргумент правильного типа, но неподходящее значение.
Сообщение об ошибке «ValueError: Неверный литерал для int() с основанием 10» появляется, например, когда вы пытаетесь преобразовать нецелую строку в целое число с помощью функции int(). «Неверный литерал для int() с основанием 10» — это сообщение Python, которое указывает на невозможность выполнения преобразования, поскольку строка неправильно представляет собой целочисленное значение.
В Python функция int() используется для преобразования числа или строки в целое число. Если входные данные представлены строкой, она должна содержать десятичные числа. Функция предполагает, что число в строке представлено в десятичной системе счисления (по основанию 10), поэтому в сообщении об ошибке указано «с основанием 10». Если строка содержит нечисловые символы или является пустой, возникает ошибка ValueError.
Примеры
Рассмотрим следующие примеры, при которых возникает ошибка «ValueError: Invalid literal for int() with base 10»:
Допустим, вы создаёте программу, которая запрашивает у пользователя два числа, а затем выдаёт их сумму. Вот пример простой реализации:
# Get user inputs num1 = input("Enter the first number: ") num2 = input("Enter the second number: ") # Convert inputs to integers and calculate sum sum = int(num1) + int(num2) # Print the result print("The sum is:", sum)
Программа работает корректно, если пользователь вводит число. Однако если пользователь введёт строку, которую нельзя преобразовать в целое число (например, «ABC» вместо «5»), то возникнет ошибка «ValueError: недопустимый литерал для int() с основанием 10». Вот как это будет выглядеть:
Как исправить ошибку
Теперь обсудим, как можно исправить эту ошибку.
Первый шаг — проверить, что данные, которые вы пытаетесь преобразовать в целое число, действительно являются целым числом. Это особенно важно, когда вы получаете данные от пользователя или считываете их из файлов.
Проверка ввода: удостоверьтесь, что строка, которую вы хотите преобразовать, содержит только цифры. Для этого можно воспользоваться встроенной функцией Python str.isdigit(). Она возвращает True, если все символы в строке являются цифрами, и False — в противном случае.
def convert_to_int(input_str): if input_str.isdigit(): return int(input_str) else: print("Invalid input. Please enter a valid number.") return None print(convert_to_int("123")) # Output: 123 print(convert_to_int("123a")) # Output: Invalid input. Please enter a valid number. None
Ещё один способ избежать ошибки — использовать блоки try и except. Когда программа встречает ошибку ValueError, она пытается преобразовать строку в число. Если это не удаётся, то код внутри блока except будет выполнен.
def convert_to_int(input_str): try: return int(input_str) except ValueError: print("Invalid input. Please enter a valid number.") return None print(convert_to_int("123")) # Output: 123 print(convert_to_int("123a")) # Output: Invalid input. Please enter a valid number. None
Вы можете увидеть результат ниже: