![]()
The error message:
ValueError: invalid literal for int() with base 10
occurs when you try to convert a string to an integer, but the string contains characters that are not valid decimal numbers.
1. Causes and Solutions
Cause 1: Trying to Convert a Non-Numeric String to an Integer
Python’s int() function expects a valid number in string format. If the string contains letters, spaces, or special characters, it raises this error.
Incorrect Code:
num = int("abc") # TypeError
num = int("12.34") # TypeError (float-like string)
num = int("10a") # TypeError (alphanumeric string)
Solution: Ensure the String Contains Only Digits
num = int("123") # Works fine
print(num) # Output: 123
Alternative: Convert Float Strings Correctly
num = float("12.34") # Convert to float first
print(int(num)) # Output: 12
Cause 2: String with Whitespace or Special Characters
If the string contains spaces or symbols like ,, $, or -, Python will not be able to parse it as an integer.
Incorrect Code:
num = int(" 456 ") # TypeError (extra spaces)
num = int("$500") # TypeError (special character)
Solution: Clean the String Before Conversion
num = int(" 456 ".strip()) # Works fine
print(num) # Output: 456
num = int("500".replace("$", "")) # Remove special characters
print(num) # Output: 500
Cause 3: Trying to Convert an Empty String
An empty string "" is not a valid number.
Incorrect Code:
num = int("") # TypeError
Solution: Check if the String is Empty Before Conversion
num_str = ""
if num_str:
num = int(num_str)
else:
print("Invalid input") # Output: Invalid input
Cause 4: Trying to Convert a Hexadecimal or Binary String
Python’s int() function, by default, works in base 10. If you try to convert hexadecimal (0x...) or binary (0b...) strings without specifying the correct base, you’ll get this error.
Incorrect Code:
num = int("0x1A") # TypeError
Solution: Specify the Correct Base
num = int("1A", 16) # Hexadecimal to integer
print(num) # Output: 26
num = int("1010", 2) # Binary to integer
print(num) # Output: 10
