Saltar al contenido
Editor

Entrada y salida en Python: print(), input() y formato

Principiante15 min4 ejercicios90 XP

Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción

0/4 ejercicios

Todo programa necesita una forma de comunicarse con el mundo exterior. Una aplicación del clima muestra temperaturas. Un juego muestra tu puntuación. Una calculadora imprime resultados. Todos ellos usan la salida.

En Python, print() es tu herramienta principal para mostrar información al usuario. Al principio parece sencilla, pero tiene opciones muy potentes que te permiten controlar exactamente cómo se ve tu salida.

En este tutorial aprenderás técnicas avanzadas de print(), trucos de formato para una salida limpia y cómo input() lee lo que escribe el usuario. Al terminar, podrás crear una salida pulida y de aspecto profesional.

Ya sabes que print("Hello") muestra texto. Pero print() puede manejar varios valores a la vez. Sepáralos con comas y Python los imprime todos con espacios entre ellos.

Piensa en print() como la persona que toma tu pedido en un restaurante y lo repite en voz alta. Le dices varios platos y los anuncia uno por uno, con una pausa entre cada uno.

Imprimir varios valores con comas
# Printing multiple values
name = "Alice"
age = 25
city = "Paris"
print(name, age, city) # Alice 25 Paris
print("Name:", name) # Name: Alice
print("Age:", age, "years") # Age: 25 years
Salida
Alice 25 Paris
Name: Alice
Age: 25 years

Fíjate en un detalle útil: Python pone un espacio entre cada valor de forma automática. Además, no necesitas convertir los números en cadenas de texto. La función print() se encarga de eso por ti.


Por defecto, print() pone un espacio entre cada valor. El parámetro sep te permite cambiar ese separador por lo que quieras. Su nombre viene de "separator" (separador).

Imagina que estás ensartando cuentas para hacer un collar. sep es el nudo que haces entre una cuenta y la siguiente. Tú eliges qué va entre los elementos.

Usar sep para controlar qué va entre los valores
# Default separator is a space
print("A", "B", "C") # A B C
# Custom separators
print("A", "B", "C", sep="-") # A-B-C
print("A", "B", "C", sep=" | ") # A | B | C
print("A", "B", "C", sep="") # ABC (no separator)
print("A", "B", "C", sep="\n") # Each on a new line
Salida
A B C
A-B-C
A | B | C
ABC
A
B
C

El parámetro sep es perfecto para construir salidas con formato, como fechas, rutas de archivos o datos CSV, sin tener que concatenar cadenas tú mismo.

Usos prácticos de sep
# Practical uses of sep
year, month, day = 2025, 3, 15
print(year, month, day, sep="-") # 2025-3-15
# Build a file path
print("home", "user", "docs", sep="/") # home/user/docs
# Create CSV-like output
print("Alice", 25, "Paris", sep=",") # Alice,25,Paris
Salida
2025-3-15
home/user/docs
Alice,25,Paris

Cada vez que print() termina, agrega un carácter de salto de línea al final. Por eso cada llamada a print() empieza en una línea nueva. El parámetro end te permite cambiar lo que viene después de la salida.

Piensa en end como el signo de puntuación al final de una frase. Por defecto, Python pulsa "Enter" después de cada print. Puedes cambiarlo por un espacio, una coma o nada en absoluto.

Usar end para controlar los saltos de línea
# Default end is a newline
print("Hello")
print("World")
# Output:
# Hello
# World
print() # blank line
# Custom end - keep printing on the same line
print("Hello", end=" ")
print("World")
# Output: Hello World
print("Loading", end="...")
print("Done!")
# Output: Loading...Done!
Salida
Hello
World

Hello World
Loading...Done!
Usar end en un bucle
# Print items on the same line using a loop
fruits = ["apple", "banana", "cherry", "date"]
for fruit in fruits:
print(fruit, end=" ")
print() # Final newline to clean up
# Output: apple banana cherry date
Salida
apple banana cherry date

¿Cómo se combinan sep y end?

Puedes usar sep y end en la misma llamada a print(). Así controlas por completo lo que va entre los valores y lo que va al final de todo.

Usar sep y end juntos
# Combine sep and end
print("A", "B", "C", sep=" -> ", end=" [DONE]\n")
# Output: A -> B -> C [DONE]
# Build a progress bar effect
print("Step 1", "Step 2", "Step 3", sep=" > ", end="\n\n")
print("All steps complete!")
Salida
A -> B -> C [DONE]
Step 1 > Step 2 > Step 3

All steps complete!

¿Cómo se crea una salida alineada y con formato?

Los programas reales necesitan una salida fácil de leer. Las tablas, los recibos y los informes necesitan columnas bien alineadas. Python te ofrece varias formas de lograrlo.

El método más sencillo usa los métodos de cadena .ljust(), .rjust() y .center(). Estos rellenan una cadena con espacios hasta llegar al ancho que indiques.

Alinear texto con ljust() y rjust()
# Right-align numbers for a clean column
print("Item".ljust(15), "Price".rjust(8))
print("-" * 24)
print("Coffee".ljust(15), "$4.50".rjust(8))
print("Sandwich".ljust(15), "$8.99".rjust(8))
print("Cookie".ljust(15), "$2.75".rjust(8))
Salida
Item               Price
------------------------
Coffee             $4.50
Sandwich           $8.99
Cookie             $2.75

Para tener más control, usa f-strings con especificadores de formato. Dentro de las llaves puedes fijar el ancho y la alineación de cada valor.

Especificadores de alineación en f-strings
# f-string alignment
# < left-align, > right-align, ^ center
print(f"{'Name':<15} {'Score':>8}")
print(f"{'-' * 24}")
print(f"{'Alice':<15} {95:>8}")
print(f"{'Bob':<15} {87:>8}")
print(f"{'Charlie':<15} {92:>8}")
Salida
Name               Score
------------------------
Alice                 95
Bob                   87
Charlie               92
Una tabla de multiplicar con formato
# Building a multiplication table
print(" ", end="")
for i in range(1, 4):
print(f"{i:>4}", end="")
print()
print("-" * 14)
for row in range(1, 4):
print(f"{row} |", end="")
for col in range(1, 4):
print(f"{row * col:>4}", end="")
print()
Salida
     1   2   3
--------------
1 |   1   2   3
2 |   2   4   6
3 |   3   6   9

¿Cómo funciona la función input() en Python?

La salida es solo la mitad de la historia. La mayoría de los programas también necesitan recibir información del usuario. En Python, la función input() pausa el programa y espera a que el usuario escriba algo.

Piensa en input() como un campo de un formulario en un sitio web. El programa muestra una pregunta, el usuario escribe su respuesta y el programa guarda esa respuesta en una variable.

Hacer una pregunta con input()
name = input("What is your name? ")
print("Hello,", name)

Pulsa Ejecutar: el programa se detiene en input() y espera. Escribe tu nombre, pulsa Enter y el programa continúa con tu respuesta guardada en name.

La función input() siempre devuelve una cadena de texto, aunque el usuario escriba un número. Es un detalle importante que toma por sorpresa a muchos principiantes. Ejecuta esto y escribe un número:

input() siempre devuelve una cadena
age = input("How old are you? ")
print(type(age)) # always <class 'str'>
print(age + 10) # TypeError: a string and a number cannot be added

¿Cómo se convierte la entrada del usuario en números?

Como input() siempre devuelve una cadena, tienes que convertirla cuando esperas un número. Envuelve input() con int() para números enteros o con float() para decimales.

Convertir la entrada en números
age = int(input("How old are you? "))
print("In 10 years you will be", age + 10)
price = float(input("Price of the item: "))
print("Tax:", round(price * 0.08, 2))

¿Qué patrones de salida son comunes en los programas de Python?

Los programas profesionales usan patrones de salida fáciles de reconocer. Los menús, los encabezados, los recibos y los indicadores de progreso siguen formatos predecibles. Aprender estos patrones hace que tus programas se vean pulidos.

Patrón: mostrar un menú
# Pattern 1: A menu display
print("=" * 30)
print(" RESTAURANT MENU")
print("=" * 30)
print("1. Burger $8.99")
print("2. Pizza $12.50")
print("3. Salad $7.25")
print("=" * 30)
Salida
==============================
    RESTAURANT MENU
==============================
1. Burger         $8.99
2. Pizza          $12.50
3. Salad          $7.25
==============================
Patrón: informe con formato
# Pattern 2: A simple report
title = "Sales Report"
print(title.center(30, "="))
print()
print(f"{'Product':<15} {'Units':>7} {'Revenue':>8}")
print("-" * 30)
products = [
("Widgets", 150, 1500.00),
("Gadgets", 89, 2670.00),
("Gizmos", 234, 4680.00),
]
for name, units, revenue in products:
print(f"{name:<15} {units:>7} {revenue:>8.2f}")
print("-" * 30)
total_rev = sum(r for _, _, r in products)
print(f"{'Total':<15} {'':<7} {total_rev:>8.2f}")
Salida
=========Sales Report=========

Product           Units  Revenue
------------------------------
Widgets             150  1500.00
Gadgets              89  2670.00
Gizmos              234  4680.00
------------------------------
Total                    8850.00
Patrón: una calculadora interactiva
# Pattern 3: A program that asks questions
print("Welcome to the Calculator!")
print("Enter two numbers to add.")
print()
num1 = float(input("First number: "))
num2 = float(input("Second number: "))
print(f"Result: {num1} + {num2} = {num1 + num2}")

Ejercicios de práctica

¡Hora de practicar! Estos ejercicios se centran en dar formato con print(). Intenta resolver cada uno antes de mirar las pistas.

Ejercicio 1: imprimir con un separador personalizado
Escribe el código

Imprime las palabras "red", "green" y "blue" separadas por - (espacio, guion, espacio) usando el parámetro sep de print().

Salida esperada:

red - green - blue

Usa una sola llamada a print() con el parámetro sep.

# Print "red", "green", "blue" with " - " as the separator
Ejercicio 2: imprimir elementos en la misma línea
Escribe el código

Usa un bucle for para imprimir los números del 1 al 5 en la misma línea, separados por espacios. Agrega un print() vacío al final para terminar la línea.

Salida esperada:

1 2 3 4 5

Usa el parámetro end dentro del bucle. Ten cuidado de no dejar un espacio sobrante después del 5.

# Print numbers 1 through 5 on the same line
for i in range(1, 6):
# Use end parameter to stay on the same line
pass # Replace this line
print() # Final newline
Ejercicio 3: crear una tabla de multiplicar
Escribe el código

Crea una tabla de multiplicar para los números del 1 al 3. Cada producto debe estar alineado a la derecha y ocupar 4 caracteres de ancho. Imprime una fila de encabezado y una línea separadora.

Salida esperada:

1   2   3
   -----------
1 |   1   2   3
2 |   2   4   6
3 |   3   6   9

Usa la alineación de las f-strings ({value:>4}) para alinear los números a la derecha en columnas de 4 caracteres.

# Print the header row
print(" ", end="")
for i in range(1, 4):
print(f"{i:>4}", end="")
print()
# Print the separator
print(" -----------")
# Print each row of the table
# Your code here
Ejercicio 4: imprimir un recibo con formato
Escribe el código

Crea un recibo con formato con los siguientes artículos y precios. Usa la alineación de las f-strings para alinear a la izquierda los nombres de los artículos (20 caracteres de ancho) y a la derecha los precios (8 caracteres de ancho, 2 decimales). Incluye un encabezado, un separador y el total.

Artículos:

  • Laptop: 999.99
  • Mouse: 29.50
  • Keyboard: 74.99
  • Salida esperada:

    ============================
          TECH STORE
    ============================
    Item                   Price
    ----------------------------
    Laptop                999.99
    Mouse                  29.50
    Keyboard               74.99
    ----------------------------
    Total                1104.48
    ============================
    # Create the receipt
    items = [
    ("Laptop", 999.99),
    ("Mouse", 29.50),
    ("Keyboard", 74.99),
    ]
    # Print the header
    # Print column labels
    # Print each item
    # Print the total

    Resumen: entrada y salida en Python

    Aquí tienes una referencia rápida de todo lo que aprendiste:

    ConceptoSintaxisEjemplo
    Imprimir varios valoresprint(a, b, c)print("Hi", name)
    Separador personalizadosep="..."print(1, 2, 3, sep="-") da 1-2-3
    Final personalizadoend="..."print("Hi", end=" ") sigue en la misma línea
    Alinear a la izquierdaf"{val:<width}"f"{name:<20}"
    Alinear a la derechaf"{val:>width}"f"{price:>8.2f}"
    Centrarf"{val:^width}"f"{title:^30}"
    Entrada del usuarioinput("prompt")name = input("Name: ")
    Convertir la entradaint(input())age = int(input("Age: "))

    Idea clave: print() hace mucho más que mostrar texto. Con sep, end y el formato de las f-strings puedes crear una salida limpia y profesional, y input() siempre te entrega una cadena que tendrás que convertir.

    ¿Qué sigue?

    Ahora que sabes crear una salida pulida, ya puedes pasar a controlar el flujo de tus programas. En los próximos tutoriales aprenderás sobre las instrucciones if y los bucles, las herramientas que permiten a tus programas tomar decisiones y repetir acciones.

    Tutoriales relacionados

    ¿Te sirvió este tutorial?

    Sugerir una mejora