Imagine you’re trying to convert a string, say "786xyz", into an integer using Python’s int() function. However, when you run the code, Python throws an error: ValueError: invalid literal for int() with base 10. This error occurs because Python’s int() function expects a string that contains only numeric characters, but you’ve provided a string with non-numeric characters. In this article, we’ll look at why this error occurs and explore quick ways to fix it.
- When Does The ValueError Occur?
- Why Does The ValueError Specifically Mention "base 10"?
- ValueError: invalid literal for int() with base 10 – Causes and Fixes
- Conclusion
When Does The ValueError Occur?
The error ValueError: invalid literal for int() with base 10 can happen in several situations, including:
- Trying to convert a string with letters or symbols into an integer.
- Converting a floating-point number stored as a string.
- Receiving unexpected input from a user or a file.
- Parsing data incorrectly.

Why Does The ValueError Specifically Mention “base 10”?
base 10 refers to the standard decimal number system that we use in everyday life. When Python tries to convert a string to an integer, it assumes you’re working in base 10 unless you specify a different base. If the string contains anything that’s not a number, Python cannot interpret it as a valid base-10 number, resulting in the ValueError error.
ValueError: invalid literal for int() with base 10 – Causes and Fixes
1. When Converting Non-Numeric Characters
If you try to convert a string containing letters or special characters into an integer, Python won’t understand it and will throw a ValueError error.
Example Error
Here, the variable value contains non-numeric characters "786xyz". When we try to convert the value into an integer, it raises a ValueError.
value = "786xyz" # Containes non-numeric characters number = int(value) # Output: ValueError: invalid literal for int() with base 10
The Fix
To fix this error, we can use the .isdigit() method, which checks whether the string consists only of digits (integers). If it does, the value is converted into an integer and assigned to number, then printed. Otherwise, an error message is displayed.
value = "786xyz"
if value.isdigit(): # Check if the value is a digit
number = int(value) # Convert the value into an integer
print("Converted:", number)
else:
print("Invalid input: Not a number")Output
Invalid input: Not a number
2. When Converting Decimal Points
Sometimes, numbers with decimal points are stored as strings, and Python doesn’t allow direct conversion from a string containing a decimal number to an integer.
Example Error
In this example, value contains a decimal number. When we try to convert it directly using int(), it raises the ValueError.
value = "12.34" # Contains a decimal number number = int(value) # Output: ValueError: invalid literal for int() with base 10
The Fix
To fix this error, we first convert the string into a float and then into an int using a try-except block. Inside the try block, the number is first converted into a float and then into an integer using int(float(value)). If the conversion fails, the except block handles the error gracefully.
value = "12.34"
try:
number = int(float(value)) # First convert the string into a float, then into an int
print("Converted:", number)
except ValueError:
print("Invalid input")Output
Converted: 12
3. When Converting an Empty String
An empty string ("")has no numeric value, so converting it to an integer will cause the ValueError: invalid literal for int() with base 10 error.
Example Error
In the example below, value is an empty string. When we try to convert it into an integer, it raises a ValueError.
value = "" number = int(value) # Output: ValueError: invalid literal for int() with base 10
The Fix
To fix this error, we first remove unnecessary spaces from the string using .strip() method, then apply an if-else condition to check if the string is empty. If it is not empty, it is converted into an integer; otherwise, an error message is displayed.
value = ""
if value.strip(): # Remove unnecessary spaces
number = int(value)
print("Converted:", number)
else:
print("Invalid input: Empty string")Output
Invalid input: Empty string
4. When Converting User Input
If you take user input with input(), there’s a high chance of receiving non-numeric data, which can lead to a ValueError.
Example Error
In this example code, If the user enters an invalid input, such as non-numeric characters or a decimal value, a ValueError will occur.
value = input("Enter a number: ")
number = int(value) # Will raise ValueError if the user input is invalidThe Fix
We can easily fix this issue using a try-except block to handle incorrect input. The try block attempts to convert the input, and if it fails, the except block catches the ValueError and prompts the user to enter a valid number.
value = input("Enter a number: ") # Get user input
try:
number = int(value)
print("You entered:", number)
except ValueError:
print("Invalid input! Please enter a valid number.")Output
Assuming the user inputs the string 20:
You entered: 20
Conclusion
In this article, we learned how to fix Python ValueError: invalid literal for int() with base 10 error. Here’s a quick recap:
- If the string contains letters or symbols, use
.isdigit()to check if it contains only numbers before conversion. - To convert a decimal number (stored as a string), first convert it into a float using
float(), then into an integer usingint(). - An empty string cannot be converted into an integer. Always check if it is empty before conversion to prevent a
ValueError. - Never trust user input. Use a
try-exceptblock to catch errors and prompt the user for valid input.
For more Python tutorials, check out the Python Series on Syntax Scenarios and level up your coding skills!