You’re trying to convert a string into an integer using int(), but Python throws a ValueError. That usually means the string doesn’t look like a proper number. Let’s break down why this happens and how to fix it.

age = int("twenty")

This gives:

ValueError: invalid literal for int() with base 10: 'twenty'

Why This Happens

The int() function expects a string that represents a valid base-10 number, like “42” or “0”. If you pass it anything else like alphabetic characters, symbols, or a decimal – it will raise this error.

Common problematic inputs:

  • “abc” → letters
  • “12.5” → decimal value (float)
  • “” → empty string
  • ” 7 ” → extra spaces (though this usually works)

Steps to Fix the Error in Python

Step 1: Print the Value Before Conversion

Always check what you’re trying to convert:

print(user_input)
age = int(user_input)

Step 2: Use str.isdigit() to Check Validity

user_input = "25"
if user_input.isdigit(): age = int(user_input)
else: print("Please enter a valid number.")

Note: isdigit() only works for positive integers without decimals.

Step 3: Use try-except Block for Safer Conversion

user_input = "12a"
try: age = int(user_input)
except ValueError: print("Invalid input. Please enter a number.")

Step 4: Strip Whitespace and Validate

cleaned = user_input.strip()
if cleaned.isdigit(): age = int(cleaned)

Step 5: Handle Decimal Numbers Properly

If the input might be a decimal (e.g., “12.5”), convert it to float instead:

number = float("12.5")

Summary

The ValueError: invalid literal for int() with base 10 shows up when int() is given a string that doesn’t cleanly represent a whole number. To fix it, first inspect the input, then validate it using methods like isdigit() or a try-except block. If decimals are expected, use float() instead of int(). Clean inputs, validate early, and handle exceptions—that’s the safest way to avoid this error. If you’re building user-facing forms, APIs, or data pipelines, it pays to y who knows how to handle input validation at every layer.