Aprende cómo tus programas pueden comunicarse con el mundo exterior: mostrando información útil y recibiendo datos del usuario. ¡Fundamental para la interactividad!
Imagina que tu programa Python es un científico brillante 🧑🔬. Para que pueda hacer su trabajo, necesita dos cosas fundamentales:
En Python, las herramientas principales para esta comunicación son la función input() para la entrada de datos desde el teclado, y la función print() para la salida de datos a la pantalla o consola. En entornos interactivos como Google Colab o Jupyter Notebooks, también contamos con funciones especiales como display() para mostrar resultados de forma más enriquecida. ¡Vamos a dominarlas! 🚀
print()
La función print() es tu principal aliada para mostrar mensajes, valores de variables y resultados de tus cálculos en la consola. Es fundamental para entender qué está haciendo tu programa y para comunicarte con el usuario.
Simplemente pasas lo que quieres imprimir como argumento entre los paréntesis. Puedes imprimir texto (cadenas o strings), números, o el valor de variables.
print("¡Hola, futuros científicos de datos!") # Imprime una cadena de texto
print(3.14159) # Imprime un número flotante
numero_atomico_H = 1
print(numero_atomico_H) # Imprime el valor de una variable (1)
# Puedes imprimir múltiples cosas a la vez, separadas por comas:
nombre_elemento = "Oxígeno"
simbolo = "O"
print("El elemento", nombre_elemento, "tiene el símbolo:", simbolo)
# Salida: El elemento Oxígeno tiene el símbolo: O
Por defecto, print() añade un espacio entre los argumentos separados por comas y un salto de línea (\n) al final de cada llamada.
sep (Separador):
El parámetro sep te permite especificar qué cadena de texto se usará para separar los múltiples argumentos que pasas a print(). Por defecto, es un espacio.
dia = 25
mes = "Diciembre"
anio = 2024
print(dia, mes, anio) # Salida: 25 Diciembre 2024 (separador por defecto: espacio)
print(dia, mes, anio, sep="/") # Salida: 25/Diciembre/2024
print("Masa", "Volumen", "Densidad", sep=" | ") # Salida: Masa | Volumen | Densidad
print("Puntos:", 10, 20, 30, sep=", ") # Salida: Puntos: 10, 20, 30
end (Finalizador):
El parámetro end controla qué carácter o cadena se imprime al final de la llamada a print(). Por defecto, es un salto de línea (\n), lo que hace que cada print() aparezca en una nueva línea. Puedes cambiarlo si quieres que varias llamadas a print() continúen en la misma línea.
print("Procesando datos", end="") # No añade salto de línea
print(".", end="")
print(".", end="")
print(". ¡Completo!")
# Salida: Procesando datos... ¡Completo!
print("Resultado 1:", end=" | ")
print("Resultado 2:", end=" | ")
print("Resultado 3")
# Salida: Resultado 1: | Resultado 2: | Resultado 3
💡 Dato para Colab: En Google Colab, la salida de cada celda se muestra debajo de ella. Usar end="" es útil si quieres construir una línea de salida a partir de varios print() dentro de la misma ejecución de celda.
Las **f-strings** (o cadenas literales formateadas) son una forma moderna, concisa y muy legible de incrustar expresiones y valores de variables directamente dentro de una cadena de texto en Python (disponibles desde Python 3.6). ¡Son la forma preferida de formatear cadenas para la mayoría de los casos!
Para crear una f-string, simplemente precede la comilla de apertura de tu cadena con la letra f o F. Luego, dentro de la cadena, puedes colocar variables o expresiones entre llaves { }, y Python reemplazará esas llaves con el valor evaluado de la expresión.
nombre_planeta = "Marte"
distancia_media_sol_km = 227.9e6 # 227.9 millones de km
numero_lunas = 2
# Usando f-string para crear un mensaje
mensaje_cientifico = f"El planeta {nombre_planeta} tiene {numero_lunas} lunas y está a una distancia media de {distancia_media_sol_km} km del Sol."
print(mensaje_cientifico)
# Salida: El planeta Marte tiene 2 lunas y está a una distancia media de 227900000.0 km del Sol.
# Incluso puedes hacer cálculos dentro de las llaves:
masa_kg = 70
altura_m = 1.75
imc = masa_kg / (altura_m ** 2)
print(f"Paciente con masa {masa_kg} kg y altura {altura_m} m. Su IMC es: {imc}")
# Salida: Paciente con masa 70 kg y altura 1.75 m. Su IMC es: 22.857142857142858
Las f-strings también te permiten controlar el formato de los números, como la cantidad de decimales, el uso de notación científica, o el relleno con ceros. Esto se hace añadiendo dos puntos : seguidos de un especificador de formato dentro de las llaves.
PI = 3.141592653589793
radio = 5.0
area = PI * radio**2
# Mostrar con 2 decimales:
print(f"El valor de PI es aproximadamente: {PI:.2f}") # Salida: El valor de PI es aproximadamente: 3.14
print(f"El área de un círculo con radio {radio} es: {area:.2f} unidades cuadradas.") # Salida: ...78.54...
# Notación científica con 3 decimales:
constante_planck = 6.62607015e-34
print(f"Constante de Planck (h) ≈ {constante_planck:.3e} J·s") # Salida: ...6.626e-34 J·s
# Relleno con ceros (ej. para códigos o IDs):
id_experimento = 7
print(f"ID del Experimento: {id_experimento:04d}") # Salida: ID del Experimento: 0007
🎨 Ventaja de las F-Strings: Son más legibles y a menudo más rápidas que otros métodos de formateo de cadenas en Python (como el método .format() o el operador %). ¡Intenta usarlas siempre que puedas!
input()
Para que tus programas sean interactivos, necesitas una forma de que el usuario ingrese datos. En Python, la función input() se encarga de esto. Cuando se llama, input() pausa la ejecución del programa y espera a que el usuario escriba algo en la consola y presione Enter.
Puedes pasarle un mensaje (prompt) como argumento a input(), que se mostrará al usuario para indicarle qué información debe ingresar.
# Pedir el nombre al usuario
nombre_usuario = input("Por favor, ingresa tu nombre: ")
print(f"¡Hola, {nombre_usuario}! Encantado de conocerte. 👋")
# Pedir una magnitud física
fuerza_aplicada_texto = input("Introduce el valor de la fuerza aplicada (en Newtons): ")
print(f"Has ingresado una fuerza de: {fuerza_aplicada_texto} N")
input() Siempre Devuelve una Cadena (str)
Un detalle crucial es que la función input() siempre devuelve el dato ingresado por el usuario como una cadena de texto (string), sin importar si el usuario escribe números.
edad_texto = input("¿Cuántos años tienes? ") # Si el usuario escribe 20
print(type(edad_texto)) # Salida: ¡Es "20", no el número 20!
# Si intentas hacer una operación matemática directamente, ¡tendrás un error!
# edad_mas_cinco = edad_texto + 5 # Esto daría un TypeError
# Debes convertir la cadena a un tipo numérico si quieres hacer cálculos:
edad_numero = int(edad_texto) # Convertir a entero
print(f"En cinco años tendrás: {edad_numero + 5} años.")
# Para números con decimales, usa float():
altura_texto = input("Ingresa tu altura en metros (ej: 1.75): ")
altura_numero = float(altura_texto)
print(f"Tu altura multiplicada por dos es: {altura_numero * 2} m")
🔄 Conversión de Tipos: Recuerda usar int() para convertir a entero y float() para convertir a número decimal (flotante) las entradas que esperas sean numéricas. Si el usuario ingresa algo que no se puede convertir (ej. texto cuando esperas un número), Python generará un error ValueError.
display() (Colab/Jupyter)
En entornos interactivos como Google Colab y Jupyter Notebooks, además de print(), tienes acceso a la función display(). Esta función es más potente porque puede renderizar diferentes tipos de objetos de forma más "inteligente" y visualmente atractiva. Proviene del módulo IPython.display.
display()?Primero, necesitas importarla. Luego, puedes pasarle varios tipos de objetos:
from IPython.display import display, HTML, Markdown, Latex
# Display básico (similar a print, pero a veces con mejor formato por defecto)
nombre_cientifico = "Albert Einstein"
display(nombre_cientifico)
# Display de DataFrames de Pandas (se ven como tablas bonitas)
# import pandas as pd
# data = {'Columna1': [1, 2], 'Columna2': [3, 4]}
# df = pd.DataFrame(data)
# display(df) # En Colab, esto renderiza una tabla HTML interactiva
# Display de HTML (¡puedes generar salidas con estilo!)
html_output = "<h3 style='color: blue;'>Resultados del Experimento 🔬</h3>"
html_output += "<p>La muestra A mostró un incremento del <strong>25%</strong>.</p>"
display(HTML(html_output))
# Display de Markdown
markdown_text = """
### Sección Importante
- Punto 1
- Punto 2 con `código`
"""
display(Markdown(markdown_text))
# Display de LaTeX (renderiza fórmulas matemáticas)
formula_latex = r"$$ E = mc^2 $$" # La r indica "raw string"
display(Latex(formula_latex))
(Recuerda que para los ejemplos de Pandas, HTML, Markdown y LaTeX, necesitas importar las clases correspondientes como se muestra).
🌟 Ventaja de display() en Colab/Jupyter: Es especialmente útil para:
print() suele ser suficiente y más universal si tu código se ejecutará fuera de un notebook.
¡Pongamos en práctica input() y print() (con f-strings) en contextos académicos!
Solicitar la base y altura de un rectángulo, calcular y mostrar su área.
# Solicitamos los datos al usuario
print("--- Calculadora de Área de Rectángulo ---")
base_rect = float(input("Ingresa la base del rectángulo (ej: 10.5): "))
altura_rect = float(input("Ingresa la altura del rectángulo (ej: 5.2): "))
# Calculamos el área
area_rect = base_rect * altura_rect
# Mostramos el resultado
print(f"\n📏 Datos Ingresados:")
print(f"Base: {base_rect} unidades")
print(f"Altura: {altura_rect} unidades")
print(f"El área del rectángulo es: {area_rect:.2f} unidades cuadradas.")
Pedir la masa de un objeto y la aceleración aplicada para calcular la fuerza resultante.
# Solicitamos los datos
print("--- Calculadora de Fuerza (Segunda Ley de Newton) ---")
masa_kg = float(input("Ingresa la masa del objeto (en kg): "))
aceleracion_mps2 = float(input("Ingresa la aceleración (en m/s²): "))
# Calculamos la fuerza
fuerza_newtons = masa_kg * aceleracion_mps2
# Mostramos el resultado
print(f"\n⚛️ Resultados:")
print(f"Masa: {masa_kg} kg")
print(f"Aceleración: {aceleracion_mps2} m/s²")
print(f"La fuerza resultante es: {fuerza_newtons:.2f} N (Newtons).")
Calcular un Índice de Masa Corporal (IMC) básico pidiendo peso y altura.
# Solicitamos los datos
print("--- Calculadora de IMC (Básica) ---")
peso_kg = float(input("Ingresa tu peso (en kilogramos): "))
altura_m = float(input("Ingresa tu altura (en metros, ej: 1.70): "))
# Calculamos el IMC: peso / (altura*altura)
if altura_m > 0: # Evitar división por cero
imc = peso_kg / (altura_m ** 2)
resultado_imc = f"Tu IMC es: {imc:.2f}"
else:
resultado_imc = "Altura no válida para calcular IMC."
# Mostramos el resultado
print(f"\n🧬 Resultados del IMC:")
print(f"Peso: {peso_kg} kg")
print(f"Altura: {altura_m} m")
print(resultado_imc)
Solicitar el nombre de una ciudad y su población estimada.
# Solicitamos los datos
print("--- Registro Demográfico Simple ---")
nombre_ciudad = input("Ingresa el nombre de la ciudad: ")
poblacion_estimada_str = input(f"Ingresa la población estimada de {nombre_ciudad}: ")
# Intentamos convertir la población a número
try:
poblacion = int(poblacion_estimada_str)
mensaje_poblacion = f"Población estimada: {poblacion:,} habitantes."
except ValueError:
mensaje_poblacion = f"Población estimada: {poblacion_estimada_str} (entrada no numérica)."
# Mostramos la información
print(f"\n🏙️ Ficha de la Ciudad:")
print(f"Nombre: {nombre_ciudad}")
print(mensaje_poblacion)
🚀 ¡Ahora te toca a ti! Modifica estos ejemplos o crea los tuyos. Prueba pedir diferentes tipos de datos, realiza cálculos y presenta los resultados de forma clara. Por ejemplo:
¡Felicidades! Has aprendido las herramientas esenciales para la entrada y salida de datos en Python:
print() para mostrar todo tipo de información, con sus útiles parámetros sep y end.input() para recibir datos directamente del usuario y la importancia de convertir estos datos al tipo correcto.display() de IPython para visualizaciones más ricas en entornos como Google Colab.Dominar la entrada y salida es fundamental, ya que te permite crear programas interactivos, depurar tu código mostrando valores intermedios, y presentar resultados de forma clara y profesional en tus proyectos científicos y académicos.
💡 Sigue Explorando: En futuras lecciones, verás cómo leer y escribir datos desde/hacia archivos, lo que expandirá enormemente las capacidades de tus programas para manejar grandes cantidades de información. ¡La aventura de datos apenas comienza!