circle-info
Desarrollo en curso, en breve se publicarán el resto de temas.

Capítulo 4: Entrada y salida de datos

La comunicación entre un programa y el usuario es el pilar de cualquier aplicación interactiva. Sin la capacidad de recibir datos y mostrar resultados, un programa sería una caja negra aislada. Python proporciona dos funciones integradas, input() y print(), que actúan como las herramientas clave para gestionar esta comunicación a través de la consola, permitiendo un diálogo fluido y efectivo.

4.1. Función input(): lectura de datos

La función input() es el mecanismo principal para obtener datos del usuario durante la ejecución del programa. Su funcionamiento es simple pero tiene una característica fundamental que siempre debe tenerse en cuenta: siempre devuelve una cadena de texto (str), sin importar lo que el usuario escriba.

Sintaxis básica de input()

variable = input("Mensaje para el usuario: ")

Características fundamentales

Siempre devuelve string: Independientemente de lo que introduzca el usuario, input() siempre devuelve un objeto de tipo str.

nombre = input("¿Cuál es tu nombre? ")
print(f"Tipo: {type(nombre)}")  # <class 'str'>
print(f"Valor: {nombre}")

edad_str = input("¿Cuántos años tienes? ")
print(f"Tipo: {type(edad_str)}")  # <class 'str'> (aunque introduzcas un número)
print(f"Valor: {edad_str}")

Acepta un mensaje opcional: El parámetro es opcional, pero es fundamental para la usabilidad.

# Con mensaje (recomendado)
nombre = input("Introduce tu nombre: ")

# Sin mensaje (no recomendado)
edad = input()  # El usuario no sabe qué introducir

Finaliza con Enter: La entrada se completa cuando el usuario presiona la tecla Enter.

Ejemplos prácticos básicos

circle-exclamation

4.2. Conversión de tipos en la entrada

Dado que input() devuelve una cadena, si necesitamos realizar operaciones numéricas, es imprescindible convertir el valor a un tipo de dato apropiado, como int (entero) o float (decimal).

circle-exclamation

4.3. Función print(): escritura y formateo

La función print() es la herramienta estándar para mostrar información en la consola. Es más versátil de lo que parece, gracias a sus parámetros opcionales:

  • Múltiples valores: Se pueden pasar varios argumentos separados por comas, y print() los mostrará en una misma línea.

  • Parámetro sep: Permite personalizar el separador que se utiliza entre los argumentos (por defecto es un espacio).

  • Parámetro end: Permite cambiar el carácter que se añade al final de la línea (por defecto es un salto de línea \n).

  • Parámetro flush: Por defecto, Python almacena en un buffer lo que se imprime y lo envía de manera automática cuando corresponde. Esto puede causar que veas retraso en la salida en ciertos casos, especialmente en programas que imprimen en tiempo real o trabajan con archivos y tuberías.

    • flush=False → No fuerza el vaciado del buffer. La salida puede retrasarse.

    • flush=True → Fuerza que todo lo que se ha enviado a print se muestre inmediatamente.

Sintaxis y parámetros de print()

Parámetros principales

Múltiples valores: Puedes pasar varios argumentos

Separador personalizado (sep):

Final personalizado (end):

Flush inmediato:


4.4. Formateo avanzado de cadenas con f-strings

A partir de Python 3.6, las f-strings (cadenas literales formateadas) se han convertido en el método preferido para formatear cadenas. Son legibles, concisas y potentes. Se definen prefijando la cadena con la letra f o F.

Las f-strings permiten:

  • Incrustar variables y expresiones directamente dentro de llaves {}.

  • Formatear números con gran precisión.

  • Alinear y rellenar el texto.

  • Usar separadores de miles para mejorar la legibilidad de números grandes.

Aunque existen métodos más antiguos como .format() y el operador %, las f-strings son la opción recomendada para todo código nuevo por su claridad y eficiencia.

Sintaxis básica

Formateo numérico

Alineación y relleno

Formateo con separadores de miles

Ejemplos prácticos de formateo

Salida en consola:

Tabla de especificadores de formato

Especificador
Descripción
Ejemplo

d

Entero decimal

f"{42:d}""42"

b

Binario

f"{42:b}""101010"

o

Octal

f"{42:o}""52"

x

Hexadecimal (minúsculas)

f"{42:x}""2a"

X

Hexadecimal (mayúsculas)

f"{42:X}""2A"

f

Punto flotante

f"{3.14:.2f}""3.14"

e

Notación científica (minúsculas)

f"{1234:.2e}""1.23e+03"

E

Notación científica (mayúsculas)

f"{1234:.2E}""1.23E+03"

%

Porcentaje

f"{0.75:.1%}""75.0%"

c

Carácter

f"{65:c}""A"

s

String

f"{'texto':s}""texto"

Métodos alternativos (legacy)

Método .format() (Python 2.6+)

Formateo % (estilo C) - Desaconsejado


4.5. Caso práctico: Calculadora interactiva

El siguiente ejemplo integra input(), print() y la conversión de tipos para crear una calculadora funcional que se ejecuta en la consola.


Resumen del Capítulo

En este capítulo has dominado las herramientas fundamentales para la interacción con el usuario en Python. La función input() te permite recopilar información, mientras que print() y las f-strings te dan un control total sobre la presentación de datos. Estas habilidades son esenciales para crear aplicaciones interactivas y profesionales.

💡 Conceptos Clave:

  • input(): Siempre devuelve string, requiere conversión para otros tipos

  • Conversión de tipos: int(), float(), validación con try-except

  • print(): Parámetros sep, end, flush para control avanzado

  • F-strings: Método moderno y potente para formateo de cadenas

  • Especificadores de formato: Control preciso sobre números, alineación y relleno

  • Validación de entrada: Esencial para aplicaciones robustas

🤔 Preguntas de Reflexión:

  1. ¿Por qué input() devuelve siempre string y no intenta detectar automáticamente el tipo?

  2. ¿Qué ventajas ofrecen las f-strings frente a los métodos de formateo anteriores?

  3. ¿Cómo puedes mejorar la experiencia de usuario al solicitar datos de entrada?

  4. ¿En qué situaciones es importante el parámetro flush=True en print()?

🔧 Ejercicio Práctico:

Crea un programa que:

  1. Solicite datos personales (nombre, edad, salario) con validación

  2. Calcule impuestos basados en tramos

  3. Muestre una nómina formateada profesionalmente

  4. Permita guardar múltiples empleados y mostrar estadísticas

Con la capacidad de recibir datos del usuario y presentarle resultados formateados, nuestros programas ya pueden interactuar con el mundo. El siguiente paso es dotarlos de inteligencia para que puedan tomar decisiones basadas en esa información, lo que nos lleva a las estructuras condicionales.


Última actualización

¿Te fue útil?