Entrada y salida en Python: guía completa

Publicado el: 11/07/2026
Tempo de leitura: 4 minutos
notebook mostrando tela a teclado

La entrada y salida en Python conectan un programa con usuarios, archivos y otros sistemas. La entrada introduce información en la aplicación. La salida muestra resultados, guarda datos o envía respuestas.

Una calculadora recibe números, realiza operaciones y presenta una respuesta. Un registro solicita nombre y correo, valida los datos y guarda el resultado. Aunque una aplicación sea grande, el flujo básico sigue siendo el mismo: recibir, procesar y devolver.

Qué se considera entrada y salida

La entrada puede llegar desde el teclado, un archivo, argumentos del terminal, una API, una base de datos o una interfaz gráfica. La salida puede dirigirse al terminal, un archivo, una respuesta web, una base de datos o un registro.

Esta guía se centra en el terminal y los archivos, que son el mejor punto de partida. También puedes consultar las guías específicas de input() en Python y print() en Python.

Leer texto con input()

La función input() muestra un mensaje opcional, pausa el programa y devuelve lo escrito:

name = input("¿Cómo te llamas? ")
print(f"Hola, {name}")

El resultado siempre es una cadena, incluso cuando se escriben números:

age = input("Edad: ")
print(type(age))  # str

La documentación oficial de input() describe este comportamiento y las condiciones de fin de archivo.

Convertir entrada numérica

Utiliza int() para enteros y float() para decimales:

quantity = int(input("Cantidad: "))
price = float(input("Precio unitario: "))

total = quantity * price
print(f"Total: ${total:.2f}")

La conversión puede fallar si el usuario escribe texto incompatible. Por eso una aplicación robusta valida los datos.

Validar la entrada

while True:
    raw_age = input("Introduce tu edad: ").strip()

    try:
        age = int(raw_age)
    except ValueError:
        print("Introduce un número entero.")
        continue

    if age < 0 or age > 130:
        print("Introduce una edad realista.")
        continue

    break

print(f"Edad válida: {age}")

Este patrón separa un error de conversión de una regla de negocio. La guía de try y except en Python explica cómo capturar errores específicos.

Limpiar texto

Los métodos strip(), lower() y casefold() facilitan comparaciones consistentes:

answer = input("¿Continuar? [s/n] ").strip().casefold()

if answer in {"s", "sí", "si"}:
    print("Continuando...")
elif answer in {"n", "no"}:
    print("Finalizando...")
else:
    print("Opción desconocida")

Normalizar no significa cambiar todos los datos indiscriminadamente. Conserva el valor original cuando sea necesario para auditoría.

Leer varios valores

split() divide una línea:

first_name, last_name = input(
    "Nombre y apellido: "
).split(maxsplit=1)

Para varios números:

numbers = [
    float(value)
    for value in input("Escribe números: ").split()
]

print(sum(numbers))

Cuando el formato sea fijo, valida el número de partes y comunica claramente el error.

Salida con print()

product = "Auriculares"
price = 49.90

print(product)
print("Precio:", price)
print("Producto:", product, "Precio:", price)

Por defecto, los argumentos se separan con espacios y cada llamada termina con un salto de línea.

Controlar sep y end

print("2026", "07", "11", sep="-")
print("Cargando", end="")
print("...listo")

sep define el texto entre argumentos. end cambia el final de la salida.

Formatear con f-strings

name = "Jordan"
score = 87.456

print(f"{name} obtuvo {score:.1f} puntos")

Las f-strings admiten alineación, porcentajes, separadores y expresiones:

revenue = 1_250_340.5
rate = 0.1875

print(f"Ingresos: ${revenue:,.2f}")
print(f"Crecimiento: {rate:.1%}")

La guía de formato de números con f-strings presenta más opciones.

Crear tablas simples

products = [
    ("Keyboard", 59.90),
    ("Mouse", 24.50),
    ("Monitor", 219.00),
]

print(f"{'Producto':<15} {'Precio':>10}")
print("-" * 26)

for name, price in products:
    print(f"{name:<15} ${price:>9.2f}")

La alineación produce informes legibles sin bibliotecas externas.

Caracteres de escape

print("Primera línea\nSegunda línea")
print("Nombre\tPuntuación")
print("Ella dijo: \"Hola\"")

Las cadenas raw son útiles cuando las barras deben mantenerse:

path = r"C:\Users\Alex\Documents"

Escribir en archivos

print() también puede escribir en un archivo abierto:

with open("report.txt", "w", encoding="utf-8") as file:
    print("Informe mensual", file=file)
    print("Ingresos: $12,500.00", file=file)

El bloque with cierra el archivo incluso si ocurre un error.

Leer archivos de texto

with open("notes.txt", "r", encoding="utf-8") as file:
    content = file.read()

print(content)

Para archivos grandes, recorre las líneas:

with open("events.log", encoding="utf-8") as file:
    for line_number, line in enumerate(file, start=1):
        print(line_number, line.rstrip())

Este patrón evita cargar todo el archivo en memoria. También se relaciona con la guía de bucles for en Python.

Escribir sin reemplazar

El modo "w" reemplaza el contenido. El modo "a" añade al final:

with open("activity.log", "a", encoding="utf-8") as file:
    print("Usuario conectado", file=file)

Elige el modo con cuidado. Abrir un archivo importante en modo escritura puede borrar su contenido anterior.

Argumentos del terminal

Los scripts de automatización pueden recibir parámetros al iniciarse:

import sys

if len(sys.argv) != 2:
    print("Uso: python greet.py NOMBRE")
    raise SystemExit(2)

print(f"Hola, {sys.argv[1]}")

Para una interfaz más profesional, argparse añade ayuda, tipos y opciones. Consulta la guía de argparse en Python.

Separar interacción y lógica

Las funciones que calculan resultados deberían recibir datos y devolver valores, sin depender directamente de input():

def calculate_total(price: float, quantity: int) -> float:
    if price < 0:
        raise ValueError("El precio no puede ser negativo")
    if quantity < 1:
        raise ValueError("La cantidad debe ser positiva")
    return price * quantity


price = float(input("Precio: "))
quantity = int(input("Cantidad: "))
print(calculate_total(price, quantity))

La guía de funciones en Python explica cómo esta separación mejora las pruebas.

Proyecto práctico: resumen de gastos

def read_positive_float(prompt):
    while True:
        try:
            value = float(input(prompt))
        except ValueError:
            print("Introduce un número válido.")
            continue

        if value < 0:
            print("El valor no puede ser negativo.")
            continue

        return value


expenses = []

while True:
    description = input(
        "Gasto, vacío para terminar: "
    ).strip()

    if not description:
        break

    amount = read_positive_float("Importe: ")
    expenses.append((description, amount))

print("\nResumen")
print("-" * 32)

for description, amount in expenses:
    print(f"{description:<20} ${amount:>9.2f}")

print("-" * 32)
print(f"{'Total':<20} ${sum(a for _, a in expenses):>9.2f}")

Errores frecuentes

  • Olvidar que input() devuelve texto.
  • Capturar todas las excepciones con un except general.
  • No eliminar espacios antes de comparar.
  • Abrir archivos sin indicar la codificación.
  • Usar modo escritura cuando se quería añadir.
  • Mezclar toda la lógica con preguntas y mensajes.
  • Confiar en la entrada sin validar rangos.

Referencia oficial

La guía oficial de entrada y salida de Python cubre formato de cadenas y archivos con mayor detalle.

Conclusión

Dominar input(), conversión, validación, print(), f-strings y archivos permite crear aplicaciones de terminal útiles. Mantén la interacción separada de la lógica, utiliza context managers y comunica errores de forma específica.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Programador pensando enquanto analisa código em dois monitores
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Cómo aprender programación desde cero: guía práctica

    Aprende programación desde cero con una ruta práctica de lógica, herramientas, ejercicios, proyectos, depuración, Git y hábitos de estudio.

    Ler mais

    Tempo de leitura: 6 minutos
    11/07/2026
    ícone de loop com o texto 'For' abaixo
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Bucles for en Python: guía completa

    Aprende bucles for en Python con range, enumerate, zip, diccionarios, break, continue, bucles anidados y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Manipulação e formatação de strings em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Strings en Python: guía completa para principiantes

    Aprende strings en Python: creación, índices, slicing, métodos, búsqueda, formato, Unicode, codificación y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    código Python de uma tupla com o texto separado formando a frase "O que são tuplas?"
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Tuplas en Python: guía completa para principiantes

    Aprende tuplas en Python: creación, índices, slicing, inmutabilidad, desempaquetado, métodos, NamedTuple y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    símbolo de PI
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Floats en Python: guía completa para principiantes

    Aprende floats en Python: operaciones, conversión, redondeo, precisión, math.isclose, Decimal, NaN, infinito y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Dicionário com o logo do Python em uma página e o texto 'Dicionário Python'
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Diccionarios en Python: guía completa para principiantes

    Aprende diccionarios en Python: claves, valores, métodos, recorridos, estructuras anidadas, comprensiones, copias y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026