Day 38/100: Advanced input() Handling in Python
 Rahul Gupta

Rahul Gupta @therahul_gupta

About: I am Software Engineer

Joined:
Jun 5, 2022

Day 38/100: Advanced input() Handling in Python

Publish Date: Jul 23
1 0

By now, you're familiar with Python's input() function. But today, we’ll take it up a notch and learn how to make it smarter, safer, and more user-friendly.

Let’s explore:

  • Type conversion
  • Error handling
  • Custom prompts
  • Looping until valid input
  • Handling lists, multiple values, and booleans

🧠 The Basics of input()

name = input("Enter your name: ")
print(f"Hello, {name}!")
Enter fullscreen mode Exit fullscreen mode

But here’s the catch — input() always returns a string.
So for numbers and other types, you must convert it manually.


🔁 Converting Input to Numbers

age = int(input("Enter your age: "))
print(f"You will be {age + 1} next year.")
Enter fullscreen mode Exit fullscreen mode

If the user enters something invalid (like "hello"), this throws an error.


🛡️ Safe Input with try-except

Let’s make it safer:

try:
    age = int(input("Enter your age: "))
    print(f"You entered: {age}")
except ValueError:
    print("That's not a valid number!")
Enter fullscreen mode Exit fullscreen mode

🔄 Loop Until Valid Input

Use a loop to ask repeatedly until correct input is given:

while True:
    user_input = input("Enter a number: ")
    try:
        number = float(user_input)
        break
    except ValueError:
        print("Please enter a valid number!")
Enter fullscreen mode Exit fullscreen mode

🔢 Getting Multiple Inputs

Split input with .split():

data = input("Enter your name and age (e.g., John 25): ")
name, age = data.split()
print(f"Name: {name}, Age: {age}")
Enter fullscreen mode Exit fullscreen mode

To convert age:

age = int(age)
Enter fullscreen mode Exit fullscreen mode

Or using list comprehension:

nums = input("Enter 3 numbers separated by space: ")
numbers = [int(x) for x in nums.split()]
print(numbers)
Enter fullscreen mode Exit fullscreen mode

✅ Accepting Boolean Input

For yes/no or true/false, use .lower() and compare:

ans = input("Do you agree? (yes/no): ").strip().lower()
if ans in ["yes", "y"]:
    print("Agreed!")
elif ans in ["no", "n"]:
    print("Not agreed.")
else:
    print("Invalid response.")
Enter fullscreen mode Exit fullscreen mode

🛠️ Creating Custom Input Functions

You can wrap all of this in reusable functions:

def get_int(prompt):
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            print("Please enter a valid integer.")

age = get_int("Enter your age: ")
print(age)
Enter fullscreen mode Exit fullscreen mode

📦 Parsing JSON from Input

import json

data = input("Enter JSON: ")
try:
    obj = json.loads(data)
    print("Parsed:", obj)
except json.JSONDecodeError:
    print("Invalid JSON")
Enter fullscreen mode Exit fullscreen mode

🧪 Extra: Input with Defaults

Python doesn't natively support defaults with input(), but you can simulate:

def input_with_default(prompt, default="yes"):
    user_input = input(f"{prompt} [{default}]: ")
    return user_input.strip() or default

response = input_with_default("Continue?")
print(response)
Enter fullscreen mode Exit fullscreen mode

🧾 Summary

Task Solution Example
Basic input input("Enter name: ")
Convert to number int(input(...))
Safe input (try-except) Use try-except for validation
Loop until valid while True with break
Split multiple inputs input().split()
List of values [int(x) for x in input().split()]
Boolean input Check for "yes"/"no" variants
JSON parsing Use json.loads()
Input with default fallback Simulate with string check

✅ TL;DR

  • input() always returns strings — convert and validate!
  • Wrap your logic in reusable functions for cleaner code.
  • Use loops + try-except for bulletproof input handling.
  • Make your scripts interactive and user-proof.

Comments 0 total

    Add comment