Tutorial

How to Receive User Input in Python: A Beginner’s Guide

Published on February 14, 2025
author

asinghwalia

How to Receive User Input in Python: A Beginner’s Guide

Introduction

Receiving user input is fundamental in Python programming, allowing developers to build interactive applications. Whether you’re working on command-line scripts, GUI-based applications, or web applications, handling user input correctly ensures efficient and secure software.

In this tutorial you will learn various ways to receive user input in Python, including the input() function, command-line arguments, GUI-based input handling, and best practices for validation and error handling.

1. Using the input() Function

The simplest way to receive user input is through Python’s built-in input() function. It reads a string from the keyboard and returns it.

Example:

name = input("Enter your name: ")
print("Hello, " + name + "!")

Taking Integer Input

Since input() returns a string, you must convert it to an integer when necessary:

age = int(input("Enter your age: "))
print("You are", age, "years old.")

Handling Float Input

When dealing with numerical inputs that require decimal precision, such as prices or measurements, you need to convert the user’s input to a floating-point number. This is achieved using the float() function, which converts a string to a floating-point number.

Here’s an example of how to handle float input in Python:

price = float(input("Enter the price: "))
print("The price is", price)

Validating User Input

When dealing with user input, it’s essential to handle potential errors that may occur when users enter invalid data. One effective way to do this is by using try-except blocks. This approach allows you to catch and manage exceptions that might be raised during the input process, ensuring your program remains robust and user-friendly.

while True:
    try:
        number = int(input("Enter an integer: "))
        break
    except ValueError:
        print("Invalid input! Please enter a valid integer.")

For learning more about handling different data types, check out our tutorial on Python Data Types.

2. Handling Multiple User Inputs

When working with user input, it’s common to require multiple values from the user. Python provides a convenient way to handle this using the split() method, which divides a string into a list of substrings based on a specified separator. In the case of user input, we can use split() to separate multiple values entered by the user.

Here’s an example of how to use split() to receive two string inputs from the user:

x, y = input("Enter two numbers separated by space: ").split()
print("First number:", x)
print("Second number:", y)

However, if you need to perform numerical operations on these inputs, you’ll need to convert them to numerical types. This can be achieved using the map() function, which applies a given function to each item of an iterable (in this case, the list of strings returned by split()). Here’s how to modify the previous example to convert the inputs to integers:

x, y = map(int, input("Enter two numbers: ").split())
print("Sum:", x + y)

By using map() to convert the inputs to integers, you can perform arithmetic operations on them as needed.

3. Reading Input from Command-Line Arguments

When executing a Python script from the command line, it’s often necessary to pass additional information or parameters to the script. This is achieved through command-line arguments, which are values provided after the script name when running it. Python’s sys.argv method allows you to access these arguments within your script.

Here’s an example of how to use sys.argv to read command-line arguments:

Save the following script as script.py:

import sys

# sys.argv is a list that contains the script name and all arguments passed to it
print("Script name:", sys.argv[0])  # sys.argv[0] is the script name itself

# Check if any arguments were passed
if len(sys.argv) > 1:
    print("Arguments:", sys.argv[1:])  # sys.argv[1:] contains all arguments except the script name

To run the script with arguments, use the following command in your terminal or command prompt:

python script.py Hello World

In this example, Hello and World are the arguments passed to the script. The script will output the script name and the arguments provided.

Understanding how to work with command-line arguments is essential for creating scripts that can be easily customized or configured without modifying the script itself. This approach is particularly useful for scripts that need to perform different tasks based on user input or configuration.

4. Receiving Input in GUI Applications

When building graphical user interface (GUI) applications, Python offers a range of libraries to facilitate interactive input handling. One of the most popular and easy-to-use GUI frameworks is Tkinter, which is included in the Python standard library. Tkinter allows you to create simple GUI applications with a minimal amount of code.

Here’s an example of how to use Tkinter to receive user input in a GUI application:

import tkinter as tk

def get_input():
    # Retrieve the text entered by the user in the Entry field
    user_input = entry.get()
    # Update the Label to display the user's input
    label.config(text=f"You entered: {user_input}")

# Create the main window of the application
root = tk.Tk()
# Create an Entry field for user input
entry = tk.Entry(root)
entry.pack()  # Add the Entry field to the window
# Create a Button to trigger the get_input function
btn = tk.Button(root, text="Submit", command=get_input)
btn.pack()  # Add the Button to the window
# Create a Label to display the user's input
label = tk.Label(root, text="")
label.pack()  # Add the Label to the window
# Start the Tkinter event loop
root.mainloop()

This example demonstrates how to create a simple GUI application that prompts the user for input, processes that input, and displays it back to the user.

Best Practices for Handling User Input

When working with user input in Python, it’s essential to follow best practices to ensure your application is robust, secure, and user-friendly. User input can come in various forms, such as command-line arguments, input from files, or interactive input from users. Here are five key guidelines to keep in mind, along with example code to illustrate each point:

1. Validate Input

Validating user input is crucial to prevent errors and ensure that the data received is in the expected format. This can be achieved using try-except blocks to catch and handle exceptions that may occur during input processing. For instance, when asking the user to enter an integer, you can use a try-except block to handle cases where the user enters a non-integer value.

# This code block is designed to repeatedly prompt the user for an integer input until a valid integer is entered.
while True:  # This loop will continue indefinitely until a break statement is encountered.
    try:
        # The input() function is used to get user input, which is then passed to int() to convert it to an integer.
        # If the input cannot be converted to an integer (e.g., if the user enters a string or a float), a ValueError is raised.
        num = int(input("Enter an integer: "))
        # If the input is successfully converted to an integer, the loop is exited using the break statement.
        break
    except ValueError:
        # If a ValueError is raised, it means the input cannot be converted to an integer.
        # In this case, an error message is printed to the user, prompting them to enter a valid integer.
        print("Invalid input! Please enter a valid integer.")

# After the loop is exited, the program prints out the valid integer entered by the user.
print("You entered:", num)

2. Handle Errors Gracefully

Implementing error handling mechanisms is vital to prevent application crashes and provide a better user experience. try-except blocks can be used to catch and handle errors in a way that doesn’t disrupt the application’s flow. For example, when reading from a file, you can use a try-except block to handle cases where the file does not exist or cannot be read.

# Try to open the file "example.txt" in read mode
try:
    with open("example.txt", "r") as file:
        # Read the content of the file
        content = file.read()
        # Print the content of the file
        print("File content:", content)
# Handle the case where the file is not found
except FileNotFoundError:
    print("File not found!")
# Handle any other exceptions that may occur
except Exception as e:
    print("An error occurred:", str(e))

3. Limit Input Length

Limiting the length of user input can help prevent unexpected behavior, such as buffer overflow attacks or excessive memory usage. This can be achieved by using string slicing or other methods to truncate input strings beyond a certain length. For instance, when asking the user to enter a username, you can limit the input length to 20 characters.

# This code block prompts the user to enter a username, with a maximum length of 20 characters.
username = input("Please enter your username (maximum 20 characters): ")
# If the length of the username is greater than 20, it is truncated to 20 characters.
if len(username) > 20:
    username = username[:20]
    print("Your username has been truncated to 20 characters.")
# The program then prints the username entered by the user.
print("Your username is:", username)

4. Sanitize Input

Sanitizing user input is critical to prevent security risks, such as SQL injection or cross-site scripting (XSS). This involves removing or escaping special characters that could be used maliciously. Python’s html module provides a convenient way to escape HTML characters in user input. For example, when displaying user input on a web page, you can use html.escape() to prevent XSS attacks.

# This code block imports the 'html' module to use its 'escape' function for sanitizing user input.
import html

# It then prompts the user to enter a string using the 'input' function.
user_input = html.escape(input("Enter a string: "))

# The 'html.escape' function is used to escape any HTML characters in the user's input to prevent XSS attacks.
# This ensures that any special characters in the input are replaced with their HTML entity equivalents, making the input safe to display in a web page.

# Finally, the sanitized user input is printed to the console.
print("Sanitized input:", user_input)

5. Use Default Values

Providing default values for user input can significantly improve usability by reducing the amount of information users need to provide. This can be achieved using the or operator to assign a default value if the user input is empty or invalid. For instance, when asking the user to enter their name, you can provide a default value of “Guest” if the user does not enter a name.

# This code block prompts the user to enter their name and then prints a greeting message.
# The input function is used to get user input, and the or "Guest" part ensures that if the user doesn't enter anything, the default name "Guest" is used.
name = input("Enter your name: ") or "Guest"
# The f-string is used to format the greeting message with the user's name.
print(f"Hello, {name}!")

By following these best practices, you can ensure that your Python application handles user input in a way that is secure, efficient, and user-friendly.

FAQs

1. How do I receive user input in Python?

Receiving user input is a fundamental aspect of any interactive program. In Python, you can use the built-in input() function to prompt the user for input and store their response in a variable. Here’s a simple example:

user_input = input("Enter something: ")
print("You entered:", user_input)

2. How do I get integer input from a user in Python?

To get integer input from a user in Python, you can use a while loop to repeatedly prompt the user for input until a valid integer is entered. Here’s an example code block that demonstrates this:

# This code block repeatedly prompts the user to enter an integer until a valid integer is entered.
while True:  # This loop will continue to run indefinitely until a valid integer is entered.
    user_input = input("Enter an integer: ")  # This line prompts the user to enter an integer and stores the input in the 'user_input' variable.
    if user_input.isdigit():  # This condition checks if the user's input consists only of digits, indicating a valid integer.
        num = int(user_input)  # If the input is a valid integer, it is converted to an integer and stored in the 'num' variable.
        print("You entered:", num)  # This line prints a message to the console indicating the valid integer entered by the user.
        break  # This line breaks out of the loop, ending the program.
    else:
        print("Invalid input! Please enter a valid integer.")  # If the input is not a valid integer, this message is printed to the console, prompting the user to enter a valid integer.

This code block ensures that the program will continue to prompt the user for input until a valid integer is entered, making it a robust way to handle user input in Python.

3. Can I receive multiple user inputs at once in Python?

Yes, you can receive multiple user inputs at once in Python. One way to do this is by using the split() method to divide the input string into multiple parts based on a specified separator, such as a space. The map() function can then be used to convert each part into the desired data type, such as an integer.

Here’s an example code block that demonstrates how to receive two integer inputs from the user at once:

x, y = map(int, input("Enter two numbers separated by space: ").split())
print("First number:", x)
print("Second number:", y)

4. How can I handle command-line arguments instead of input()?

When running a Python script from the command line, you can pass arguments to the script. These arguments are stored in the sys.argv list. The first element of this list, sys.argv[0], is the script name itself. The rest of the elements are the arguments passed to the script.

Here’s an example of how you can handle command-line arguments in your Python script:

import sys

# Check if any command-line arguments were provided
if len(sys.argv) > 1:
    # Print the arguments received
    print("Command-line arguments received:", sys.argv[1:])
else:
    # Inform the user if no arguments were provided
    print("No command-line arguments provided.")

In this example, the script checks if any arguments were provided by checking the length of sys.argv. If there are more than one elements in sys.argv (i.e., at least one argument was provided), it prints the arguments received. If not, it informs the user that no arguments were provided.

This approach is particularly useful when you want to make your script more flexible and allow users to customize its behavior by passing arguments from the command line.

5. How do you take input in Python?

In Python, you can take input from the user using the input() function. This function returns a string, which can be stored in a variable for further processing. Here’s an example:

user_input = input("Please enter your name: ")
print("Hello, " + user_input + "!")

This code prompts the user to enter their name and then prints a greeting message with their name.

6. How do you take input from a variable in Python?

In Python, you cannot directly take input from a variable. Variables are used to store values, not to receive input. However, you can use a variable to store the input received from the user using the input() function. For example:

name = input("Please enter your name: ")
print("Hello, " + name + "!")

In this example, the name variable stores the input received from the user, and then it is used to print a greeting message.

7. How to input a number in Python?

To input a number in Python, you can use the input() function and convert the input string to an integer or float using the int() or float() function, respectively. Here’s an example:

age = int(input("Please enter your age: "))
print("You are " + str(age) + " years old.")

This code prompts the user to enter their age, converts the input to an integer, and then prints a message with their age.

Conclusion

This tutorial covered multiple ways to receive user input in Python, from basic terminal input to command-line arguments and GUI-based interactions. By implementing input validation and error handling, you can create robust and user-friendly Python applications.

For more Python tutorials, check out:

  1. Python Data Types

  2. Python Read, Write, and Copy Files

  3. Python Type Function

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar
asinghwalia

author

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.