Python es uno de los lenguajes de programación más populares y accesibles en la actualidad, usado en áreas tan variadas como el desarrollo web, la ciberseguridad, el análisis de datos e incluso la inteligencia artificial. Los puntos fuertes de Python son su sintaxis simple, su legibilidad y su gran comunidad. Esto lo convierte en una opción ideal, especialmente para principiantes que quieren dar sus primeros pasos en el mundo del desarrollo.

¡Python es, además, el (ver lugar aquí) lenguaje de programación más usado en el mundo!

Personalmente, uso Python para automatizar muchas tareas y trabajar en el campo de la ciberseguridad. Ya sea para analizar rápidamente un sistema, una aplicación, automatizar algunas fases de la redacción de mis informes o presentar visualmente resultados, uso Python a diario y he aprendido a usarlo a medida que surgían mis necesidades e ideas.

En este artículo, ¡espero ayudarte a empezar tu aventura con Python! Nos centraremos en escribir tu primer script en Python, detallando lo básico para entender el lenguaje y ponerlo en práctica. Si estás listo para aprender Python, ¡sigue leyendo!

¿Qué editor usar para desarrollar en Python?

Antes de empezar, es importante tener las herramientas adecuadas. Me refiero a los IDE (Integrated Development Environment), interfaces gráficas que facilitan el trabajo del desarrollador integrando muchas funciones como la gestión de módulos, la coloración del texto, la corrección del código e incluso la integración de asistentes de desarrollo basados en inteligencia artificial.

Para este primer artículo introductorio y para simplificar tus primeros intentos, lo haremos sencillo: entornos como IDLE (instalado por defecto con Python en Windows), VS Code o PyCharm (un poco más avanzado) son buenas opciones, aunque en realidad ¡un simple editor de texto basta! En este artículo, usaré VS Code (Visual Studio Code), que existe para Linux y Windows, como IDE de Python.

Lectura: PyCharm: Cómo Instalarlo y Usarlo

Para comenzar, VS Code ofrece una interfaz sencilla que permite ejecutar scripts de Python fácilmente. Después de su instalación (y la de Python en Windows), ya estamos listos para dar nuestros primeros pasos con Python.

Captura de pantalla de la interfaz de usuario de Visual Studio Code (VS Code), mostrando la página de inicio con opciones para crear nuevos archivos, abrir proyectos, y acceso a tutoriales, incluyendo uno específicamente para Python.
Aprovecha al máximo VS Code para programar en Python. Guía rápida y recursos para principiantes.

Lo básico que debes saber para aprender Python

Python: un lenguaje interpretado

Python es un lenguaje interpretado, lo que significa que el código se ejecuta línea por línea por un programa llamado intérprete de Python (que ya instalaste). A diferencia de los lenguajes compilados, como C o Java, Python no necesita una transformación previa del código fuente a un archivo ejecutable; los scripts se pueden usar tal cual. Esto ofrece varias ventajas:

  • Facilidad de ejecución: no necesitas compilar el código, solo escríbelo y ejecútalo con un comando como “python3 archivo.py” o “python.exe archivo.py”. (Sin embargo, el intérprete debe estar presente en el sistema, lo cual es el caso por defecto en Linux).
  • Retorno inmediato de errores: si se detecta un error, el intérprete se detiene en la línea afectada y proporciona un mensaje de error, lo que simplifica la depuración y acelera el desarrollo.
  • Interactividad: Python tiene un modo interactivo al que se accede simplemente escribiendo “python3” en una terminal (Linux) o ejecutando “python.exe” en Windows. Este modo permite probar instrucciones directamente y visualizar su resultado instantáneamente.

Aquí tienes un ejemplo simple del uso de Python en modo interactivo en Mac desde la terminal:

Captura de pantalla de una terminal de Mac mostrando la ejecución de código Python en modo interactivo. Se imprime la frase "Python en modo interactivo!".
Ejecuta tu código Python directamente en la terminal de tu Mac.
💪
Aunque uses un IDE potente como PyCharm o Visual Studio Code, siempre es útil tener una terminal interactiva de Python para probar rápidamente tus instrucciones sin alterar tu script en desarrollo. Esto también permite explorar más rápidamente las funciones de un módulo o los métodos de un objeto.

Lo básico de la sintaxis de Python

Python es conocido por su legibilidad y simplicidad. Una de las particularidades de Python es el uso de la indentación para estructurar el código, en lugar de las llaves usadas en otros lenguajes como C o Java. ¡Esto lo hace más agradable y simple de leer y escribir!

En Python, cada bloque de código debe estar correctamente alineado bajo una instrucción, o se generará un error. ¡No puedes hacer lo que quieras y añadir espacios o tabulaciones donde quieras! Por ejemplo:

print("Hola")
    print("Codigonautas.")
Captura de pantalla que muestra un error de indentación en un código Python.
Error de Indentación en Python! Aprende a solucionar este común problema que genera el mensaje IndentationError

Las buenas prácticas de desarrollo de Python (definidas por la norma PEP 8) recomiendan el uso de 4 espacios para cada nivel de indentación.

La indentación es importante, y seguramente será la causa de tus primeros errores en Python cuando empieces a usar bucles o funciones. Recuerda bien este error “IndentationError: unexpected indent“, porque es muy probable que te lo encuentres si eres principiante.

Otro punto sobre la sintaxis del código: los comentarios en Python se añaden con el carácter “#” para indicar una línea que el intérprete debe ignorar. Como en cualquier lenguaje, permiten explicar el funcionamiento del código y facilitar su lectura. Ejemplo:

# Esto es un comentario
if 5 > 3:
    print("Cinco es mayor que tres")  # Indentación obligatoria

No olvides comentar tu código, especialmente cuando escribas scripts más complejos, pero también para crear pequeños scripts “de memoria” mientras sigues este artículo.

Escribir tu primer script en Python

Crear y guardar un archivo Python (.py)

Una vez que VS Code esté instalado y listo para usarse con Python, podemos crear un nuevo archivo, nombrarlo como queramos y, sobre todo, darle la extensión “.py” (para Python):

Captura de pantalla que muestra la interfaz de usuario de Visual Studio Code donde se está creando un nuevo archivo Python con el nombre "miprograma.py".
Aprende a crear fácilmente archivos Python (.py) en Visual Studio Code. Este sencillo tutorial te mostrará los pasos.

Puedes guardarlo en cualquier carpeta. ¡Listo! Tu primer script de Python ha nacido, aunque por ahora no hace nada. Su contenido aparece ahora en el espacio principal de VS Code.

Añadir una primera línea de código simple

Ahora aprenderemos a usar una primera instrucción de Python muy sencilla con la función “print()”. Esta función es una de las más básicas en Python. Permite mostrar texto o el resultado de una operación en la pantalla para obtener información sobre su estado de avance o simplemente recuperar el resultado de sus operaciones. Aquí hay un ejemplo de uso:

print("¡Mi primera instrucción en Python!")

Esta línea debe insertarse en VS Code, asegurándote de que tu archivo “.py” sea el que se está editando:

Captura de pantalla de Visual Studio Code mostrando un archivo Python
¡Tu primer paso en el mundo de la programación Python! Aquí te mostramos cómo escribir y ejecutar tu primer programa en VS Code.

Ejecutar un script de Python desde la terminal

Una vez que esta instrucción se haya escrito en el espacio de código de VS Code, puedes, si lo deseas, usar el botón “Run” (▷).

Para asegurar que tu código Python funcione correctamente con caracteres especiales (acentos, caracteres internacionales, etc.), es fundamental especificar la codificación de caracteres del archivo. La línea # -*- coding: utf-8 -*- (o # coding=utf-8), situada al principio de tu archivo .py, declara que el archivo usa la codificación UTF-8, la cual soporta una amplia gama de caracteres. 

# -*- coding: utf-8 -*-
print("¡Mi primera instrucción en Python !")
Captura de pantalla que muestra la ejecución exitosa de un código Python simple en Visual Studio Code.
Ejecuta tu código Python sin problemas en VS Code. Observa la salida del programa y el mensaje de finalización exitosa.

También puedes ejecutar tu programa usando Python en la terminal de Visual Studio Code (o la terminal del sistema si no usas VS Code):

# En Windows
python.exe miprograma.py

# En Linux
python3 miprograma.py
💡
Un pequeño detalle: si modificas tu código y luego haces clic en el botón “Run” de VS Code, esto guarda los cambios en el archivo abierto y luego lo ejecuta.

Conceptos básicos en Python

¡Acabamos de crear nuestro primer script en Python! Pero, por ahora no hace nada interesante. Ahora, aprenderemos más sobre los fundamentos del código Python para poder hacer más cosas en nuestro script.

Las variables: asignación y uso

Como en todos los lenguajes, las variables son contenedores que permiten almacenar valores, mantenerlos temporalmente en memoria para reutilizarlos en nuestro programa.

En Python, su declaración es simple: basta con elegir un nombre y asignarle un valor usando el símbolo “=”. No es necesario definir previamente su tipo (cadena de caracteres, entero, flotante, etc.) como en otros lenguajes. Se dice que Python es un lenguaje tipado dinámicamente, ya que los tipos de variables se determinan y verifican en el momento de la ejecución en lugar de durante la compilación.

Aquí hay algunos ejemplos de creación de variables en Python:

x = 10         # Entero
nombre = "Alice"  # Cadena de caracteres
pi = 3.14      # Número decimal (float)

Las variables se pueden usar en cálculos, visualizaciones o transmitirse a funciones:

edad = 25
print(f"Tengo {edad} años.")  # Muestra: Tengo 25 años.

En la instrucción anterior, la “f” antes de las comillas indica que se trata de una f-string (abreviatura de formatted string). Permite insertar directamente valores o expresiones en una cadena de caracteres, encerrándolos entre llaves “{ }”.

Python, al ser un lenguaje con tipado dinámico, puedes cambiar el tipo de una variable sin volver a declararla:

x = 5 # Aquí, x contiene un entero
x = "Cinco"  # Ahora x contiene una cadena de caracteres

Sin embargo, para una mejor legibilidad, se recomienda mantener nombres explícitos y tipos coherentes.

No dudes en copiar y pegar estos ejemplos de código en VS Code, modificarlos (incluso provocar errores) y ejecutarlos. La mayor parte del aprendizaje de un lenguaje de programación se realiza a través de la práctica.

Las estructuras condicionales (if, else, elif)

Las estructuras condicionales permiten ejecutar un bloque de código solo si se cumple una condición. Python usa las palabras clave “if” (que significa “si”), “elif” (equivalente a “else if”, que significa “sino si”) y “else” (que significa “sino”). Ejemplo:

edad = 18
if edad < 18:
    print("Menor")
elif edad == 18:
    print("Recién mayor de edad")
else:
    print("Mayor de edad")

Las condiciones en Python pueden usar operadores de comparación (==, !=, <, >, <=, >=) u operadores lógicos (and, or, not). Ejemplo con operadores de comparación:

temperatura = 30
if temperatura > 25 and temperatura < 35:
    print("Hace calor.")

Aquí, hemos usado dos condiciones que deben cumplirse para ejecutar el código dentro de nuestro “if”. La temperatura debe ser superior a 25 e inferior a 35. Aquí hay otro ejemplo con un “or”:

temperatura = 60
if temperatura < 0 or temperatura > 35:
    print("Temperatura anormal.")

Si has seguido bien, si este segundo fragmento de código se ejecuta con una temperatura de “20”, no tendremos ningún retorno en la terminal, ¡haz la prueba!

Los bucles (for, while)

Los bucles permiten repetir una acción varias veces. Python ofrece dos tipos de bucles:

  • Bucle “for”: se usa para recorrer secuencias como listas o rangos de números.
for i in range(5):  # Recorre los números del 0 al 4
    print(f"Número: {i}")
  • Bucle “while”: se usa para repetir una acción mientras una condición sea verdadera.
contador = 0
while contador < 5:
    print(f"Contador: {contador}")
    contador += 1  # Incremento
¡Lee bien tu código! Debes tener cuidado con los bucles infinitos: ocurren si la condición de parada nunca se cumple y pueden consumir todos tus recursos. Es por eso que en el bucle “while”, añadimos “1” a nuestro contador al final de cada bucle.

Las funciones: definir y llamar a una función

Las funciones permiten organizar el código en bloques reutilizables. Una función se define con la palabra clave “def” seguida de un nombre, paréntesis para los parámetros y dos puntos “:”. Deben declararse al principio del script para poder hacer referencia a ellas posteriormente. Aquí hay un ejemplo de función:

def saludar(nombre):
    print(f"¡Hola, {nombre}!")

Para llamar a una función:

saludar("Alice")  # Muestra: ¡Hola, Alice!

También podemos hacer que una función nos devuelva información. Para ello, hay que indicar la información que se va a devolver usando “return”:

def suma(a, b):
    return a + b

resultado = suma(5, 3)
print(resultado)  # Muestra: 8

Como puedes ver, el valor devuelto por la función “suma” se almacenará en la variable “resultado”. También hemos visto cómo enviar parámetros a una función, usando información entre paréntesis al llamarla (“suma(5, 3)”). La función debe estar escrita para recibir estos parámetros (“suma(a, b):”). Se almacenarán entonces en variables (“a” y “b”) válidas solo dentro de esa función.

Manipular listas, tuplas y diccionarios

Tenemos otros tres tipos de datos importantes que ver en Python: listas, tuplas y diccionarios. Cada estructura tiene sus particularidades y responde a necesidades específicas.

Las listas

Las listas son colecciones ordenadas, modificables e indexadas, lo que significa que cada elemento tiene una posición (índice) en la lista. Se usan para almacenar una serie de elementos, incluso de diferentes tipos. Aquí hay algunos ejemplos de operaciones usando listas:

# Declaración de una variable de tipo lista
frutas = ["manzana", "plátano", "cereza"]
print(frutas[0])  # Muestra: manzana (elemento en el índice 0)

# Añade "naranja" al final de la lista
frutas.append("naranja")  
print(frutas)  # Muestra: ['manzana', 'plátano', 'cereza', 'naranja']

# Modifica el elemento en el índice 1
frutas[1] = "mango"  
print(frutas)  # Muestra: ['manzana', 'mango', 'cereza', 'naranja']

# Elimina el elemento en el índice 2
del frutas[2]  
print(frutas)  # Muestra: ['manzana', 'mango', 'naranja']

Las listas son el más simple de los 3 tipos que veremos aquí; su uso es bastante intuitivo una vez que se entiende el sistema de índices (¡que siempre empieza en 0!).

Las tuplas

Las tuplas se parecen a las listas, pero son inmutables, lo que significa que su contenido no se puede modificar una vez creado. Se usan cuando quieres garantizar que los datos no se alterarán, lo que corresponde a casos menos frecuentes cuando se empieza. Aquí hay algunos ejemplos del uso de tuplas (usaremos paréntesis en lugar de corchetes):

# Declaración de una tupla
colores = ("rojo", "azul", "verde")
print(colores[1])  # Muestra: azul (elemento en el índice 1)

# Intento de modificar una tupla (genera un error)
colores[0] = "amarillo"  # Error: las tuplas son inmutables

# Las tuplas se pueden usar en bucles
for color in colores:
    print(color)

Las tuplas son ideales para datos constantes, por ejemplo, los días de la semana o coordenadas GPS.

Los diccionarios

Los diccionarios son colecciones que asocian claves únicas a valores. Permiten modelar relaciones entre datos, como pares clave-valor. Por ejemplo, podemos crear un diccionario llamado “persona” que tendrá como claves “nombre” y “edad”:

# Creación de un diccionario con 2 claves
persona = {"nombre": "Alice", "edad": 25}

Podemos mostrar un valor de nuestro diccionario usando su clave:

print(persona["nombre"])  # Muestra: Alice (valor asociado a la clave "nombre")

Aquí hay otros ejemplos, incluyendo una eliminación:

persona["ciudad"] = "París"  # Añade una nueva clave/valor
print(persona)  # Muestra: {'nombre': 'Alice', 'edad': 25, 'ciudad': 'París'}

del persona["edad"]  # Elimina la clave "edad"
print(persona)  # Muestra: {'nombre': 'Alice', 'ciudad': 'París'}

Los diccionarios son perfectos para representar conjuntos de datos estructurados, como objetos o registros.

Ejemplo práctico: crear un script simple con Python

Ahora que hemos adquirido algunos conocimientos sobre las instrucciones y conceptos básicos de Python, crearemos un script simple. En Visual Studio Code, empieza con un nuevo archivo “.py” como hemos visto antes.

Obtener una entrada del usuario con input()

Empezaremos saludando a nuestro usuario:

print("¡Hola!")

Luego, le pediremos su nombre, usando la instrucción “input()” que permite hacer una pausa esperando a que nuestro usuario escriba un texto, que almacenaremos en una variable:

print("¡Hola!")
nombre_usuario = input()
print(f"¡Encantado {nombre_usuario}, yo soy Script!")

Una vez que este fragmento de código esté en nuestro script, podemos probarlo usando el botón “Run” de Visual Studio Code:

O bien ejecutando nuestro script usando “python3 miprograma.py” (Linux) o “python.exe miprograma.py” (Windows) en la pestaña “Terminal”:

En cualquier caso, nuestro script espera una entrada nuestra antes de continuar su ejecución. También podríamos ser más explícitos pidiendo claramente el nombre de nuestro usuario, usando la instrucción “input()” de la siguiente manera:

print("¡Hola!")
nombre_usuario  = input("¿Cómo te llamas? : ")
print(f"¡Encantado {nombre_usuario}, yo soy Script!")
Captura de pantalla de un editor de código mostrando un programa Python simple que solicita el nombre del usuario y luego muestra un saludo personalizado.
Aprende a crear un programa interactivo en Python que personaliza el saludo al usuario.

No dudes en probar este código y modificarlo a tu gusto, ¡y sobre todo en cometer errores!

Realizar una operación en función de la entrada del usuario

Ahora, mejoraremos nuestro script usando el concepto de condiciones y aprenderemos a contar el número de letras en una cadena de caracteres. Daremos una respuesta diferente según la longitud del nombre proporcionado. Empecemos contando el número de letras de una cadena de caracteres. Esto se puede hacer usando la función “len()”:

longitud_nombre = len(nombre_usuario)
print(longitud_nombre)

Al ejecutar este código (asegurándote de que la variable “nombre_usuario” esté declarada), verás en la terminal el número de caracteres de tu nombre. Ahora, podemos usar condiciones para obtener una respuesta diferente de nuestro script dependiendo de si nuestro nombre es largo o corto:

print("¡Hola!")
nombre_usuario  = input("¿Cómo te llamas? : ")
print(f"¡Encantado {nombre_usuario}, yo soy Script!")

longitud_nombre = len(nombre_usuario)
if longitud_nombre > 5 :
    print(f"Tu nombre tiene {longitud_nombre} caracteres, ¡es bastante largo!")
else:
    print(f"Tu nombre tiene {longitud_nombre} caracteres, ¡es bastante corto!")

Usamos una condición “mayor que” 5 en la instrucción “if”, y luego una instrucción “else” en caso de que esta condición no se cumpla (¡Atención a la indentación!). Aquí está el resultado de dos ejecuciones del mismo programa con dos nombres diferentes:

Captura de pantalla que muestra la salida de un programa Python en la terminal.
Aprende a usar condicionales en Python para manejar diferentes comportamientos según la longitud de una cadena de texto.

Vamos a mejorar aún más nuestro script usando el concepto de bucles y condiciones, por ejemplo, preguntando cuántas personas hay con el usuario, así como sus nombres. También aprovecharemos para comentar nuestro script, que empieza a volverse más complejo.

Aquí está el código Python de nuestro script “final”:

print("¡Hola!")
numero_usuarios = input("¿Cuántas personas hay contigo?  : ")

# El índice (a menudo abreviado "i") permitirá contar el número de iteraciones del bucle
indice = 0

# Bucle basado en el número de usuarios
# Por defecto, el tipo devuelto por la función "input()" es una "string"
# Debemos convertirla a int con la sintaxis "int(variable)"
while indice < int(numero_usuarios):
    nombre_usuario = input("¿Cómo te llamas? : ")
    print(f"¡Encantado {nombre_usuario}, yo soy Script!")

    # Recuperación de la longitud del nombre con la función "len()"
    longitud_nombre = len(nombre_usuario)
    #
    if longitud_nombre > 5 :
          print(f"Tu nombre tiene {longitud_nombre} caracteres, ¡es bastante largo!")
    else:
          print(f"Tu nombre tiene {longitud_nombre} caracteres, ¡es bastante corto!")

    # Llegamos al final de un bucle, debemos
    # incrementar (añadir 1) al índice para evitar
    # un bucle infinito
    indice += 1

# Adaptamos nuestro "adiós" según el
# número de personas
if int(numero_usuarios) > 1 :
  print("¡Adiós a todos!")
else:
  print("¡Adiós!")

Para que sea más claro, aquí te dejo una captura de pantalla de mi vista de Visual Studio Code, lo que permite visualizar concretamente los beneficios de un IDE: coloración sintáctica, numeración de líneas, subrayado de errores sintácticos potenciales, etc.:

Captura de pantalla de Visual Studio Code mostrando un script Python que utiliza un bucle while para solicitar nombres de usuario y mostrar mensajes personalizados según la longitud del nombre.
Crea bucles while eficientes en Python.

Por supuesto, este script puede mejorarse mucho. Observa, por ejemplo, qué pasa si no respondes a las preguntas o si respondes con texto en lugar de un número al preguntar el número de usuarios. Para ir más allá, aquí tienes algunas ideas de mejoras:

  • Verificar que el usuario ha introducido un número entre 0 y 10 en la pregunta “¿Cuántas personas hay contigo?” usando un bucle “while”, una condición y la función “type(variable)” que permite verificar el tipo de una variable.
  • Verificar que se ha dado una respuesta al pedir el nombre del usuario usando la función “len(variable)” y volver a hacer la pregunta si la respuesta está vacía (o es demasiado larga).
  • Permitir al usuario reiniciar el programa sin tener que volver a ejecutarlo manualmente usando un bucle “while” y una respuesta que acepte solo “S” (sí) o “N” (no).
  • Usar una función para determinar si el nombre es largo o corto

Usar módulos integrados

Python tiene un vasto ecosistema de bibliotecas, que son conjuntos de funcionalidades listas para usar. Algunas forman parte de la biblioteca estándar (instalada por defecto con Python), mientras que otras, desarrolladas por la comunidad, se pueden descargar e instalar según tus necesidades.

El interés de una biblioteca Python (también llamada “módulo” en Python) es ampliar las funciones del lenguaje sin tener que codificarlo todo tú mismo. Esto permite ahorrar tiempo, simplificar el código y aprovechar herramientas ya optimizadas por otros desarrolladores.

Imagina que Python es un conjunto de herramientas básicas. Las bibliotecas estándar son como herramientas esenciales (destornillador, martillo), mientras que las bibliotecas de la comunidad, disponibles en PyPI (https://www.pypi.org), son herramientas especializadas que puedes añadir según tus proyectos (taladro, sierra circular).

Gracias a las bibliotecas, Python se vuelve muy versátil: cálculos matemáticos avanzados, manipulación de fechas, creación de interfaces gráficas, gestión de datos científicos, interacción con APIs, etc. Te permiten concentrarte directamente en lo esencial de tu proyecto sin reinventar la rueda.

Para usar una biblioteca, hay que importarla en tu script con la instrucción “import “, por ejemplo:

import math
import random

Luego, sus funciones estarán disponibles en tu script. Para ello, hay que anteponer las funciones que quieres usar con el nombre de la biblioteca, por ejemplo:

import math
print(math.sqrt(16))  # Muestra: 4.0

Leer la documentación de una biblioteca es importante para comprender sus funciones y su uso. Aquí están las documentaciones oficiales de las dos bibliotecas que usaremos en este artículo:

Aunque la documentación pueda parecer compleja para un principiante, aprender a consultarla es una habilidad clave para progresar. Python está lleno de miles de bibliotecas, y saber dónde buscar la información correcta te permitirá sacar el máximo provecho de Python, pero sobre todo, pasar más rápidamente al núcleo del desarrollo de tu proyecto.

El módulo math: realizar cálculos avanzados

El módulo “math” proporciona funciones matemáticas avanzadas como el cálculo de raíces cuadradas, el uso de constantes matemáticas y mucho más. Se utiliza en muchísimos contextos científicos o estadísticos. Aquí hay algunos ejemplos de uso, ten en cuenta que todas las funciones de “math” van precedidas de “math”:

import math

# Cálculo de la raíz cuadrada
numero = 16
raiz = math.sqrt(numero)
print(f"La raíz cuadrada de {numero} es {raiz}")

# Uso de la constante (variable no modificable) pi
radio = 5
area = math.pi * radio**2
print(f"El área de un círculo de radio {radio} es {area:.2f}")

# Cálculo del factorial
n = 5
factorial = math.factorial(n)
print(f"El factorial de {n} es {factorial}")

El módulo random: generar números aleatorios

El módulo “random” permite generar números o seleccionar elementos aleatoriamente. Esto puede ser útil para crear juegos, simular datos o incluso generar contraseñas.

Ejemplos de funciones útiles:

  • “random.randint(a, b)”: genera un número entero aleatorio entre a y b.
  • “random.choice(sequence)”: selecciona un elemento aleatorio de una lista.
  • “random.shuffle(sequence)”: mezcla aleatoriamente los elementos de una lista.
import random

# Generar un número entero aleatorio entre 1 y 10
numero_aleatorio = random.randint(1, 10)
print(f"Número aleatorio generado: {numero_aleatorio}")

# Seleccionar un elemento aleatorio en una lista
frutas = ["manzana", "plátano", "cereza", "naranja"]
fruta_elegida = random.choice(frutas)
print(f"Fruta elegida al azar: {fruta_elegida}")

# Mezclar una lista
random.shuffle(frutas)
print(f"Lista mezclada: {frutas}")

Finalmente, para ayudarte a dominar rápidamente un módulo, aquí tienes un pequeño truco. En una terminal interactiva de Python (y también en un script), puedes listar todas las funciones de un módulo usando la función “dir()”:

Captura de pantalla de un editor de código mostrando un programa Python que utiliza la función dir() para listar las funciones disponibles en el módulo math.
Descubre rápidamente todas las funciones del módulo math de Python usando la función dir().

Creación de un juego basado en random

¡Pequeño ejercicio! Con la ayuda del módulo “random”, un bucle y condiciones, crea un pequeño juego tipo “Adivina el número”. Aquí están las reglas, muy sencillas:

  • Al inicio, el programa genera un número entre 1 y 100.
  • En un bucle, el programa pide la entrada de un número al usuario.
  • Si la propuesta es mayor que el número elegido por el programa, este responde con un “Es más pequeño” y viceversa si la propuesta es menor.
  • El programa se detiene cuando el usuario ha propuesto el número correcto y muestra el número de intentos que le ha costado al usuario.

Aquí tienes una posible respuesta a este ejercicio:

# Importación del módulo random para generar un número aleatorio
import random

# Generar un número aleatorio entre 1 y 100
numero_a_adivinar = random.randint(1, 100)

# Inicialización del contador de intentos
numero_intentos = 0

# Mensaje de bienvenida
print("¡Bienvenido al juego del Adivina el Número!")
print("El programa ha elegido un número entre 1 y 100.")
print("¡A ti te toca adivinarlo! ¡Buena suerte!")

# Bucle principal
while True:
    try:
        # Pedir un número al usuario
        propuesta = int(input("Introduce tu propuesta: "))

        # Incrementar el contador de intentos
        numero_intentos += 1

        # Verificar la propuesta
        if propuesta < numero_a_adivinar:
            print("¡Es más grande!")
        elif propuesta > numero_a_adivinar:
            print("¡Es más pequeño!")
        else:
            # El usuario ha encontrado el número correcto
            print("¡Felicidades! Has encontrado el número correcto:", numero_a_adivinar)
            print("¡Bravo! Te ha costado", numero_intentos, "intentos.")
            break  # Salir del bucle

    except ValueError:
        # Manejar entradas no válidas (por ejemplo, si el usuario introduce texto)
        print("Por favor, introduce un número válido.")

Y aquí está el resultado de mi primera partida: 7 intentos :).

¡Bienvenido al juego del Adivina el Número!
El programa ha elegido un número entre 1 y 100.
¡A ti te toca adivinarlo! ¡Buena suerte!
Introduce tu propuesta: 44
¡Es más grande!
Introduce tu propuesta: 77
¡Es más grande!
Introduce tu propuesta: 89
¡Es más grande!
Introduce tu propuesta: 
Por favor, introduce un número válido.
Introduce tu propuesta: 99
¡Es más pequeño!
Introduce tu propuesta: 95
¡Es más pequeño!
Introduce tu propuesta: 90
¡Es más grande!
Introduce tu propuesta: 92
¡Felicidades! Has encontrado el número correcto: 92
¡Bravo! Te ha costado 7 intentos.

Una vez más, te doy algunas sugerencias para ir más allá y complicar un poco las cosas:

  • Limitar el número de intentos: añade un límite, por ejemplo, 10 intentos máximos, después de los cuales el jugador pierde la partida.
  • Añadir un modo de dificultad: permite al usuario elegir entre varios niveles de dificultad.
  • Dar pistas adicionales: por ejemplo, indicar si la diferencia entre la propuesta y el número a adivinar es grande o pequeña.
  • Cronometrar la partida: usa el módulo “time” para calcular la duración total del juego. Muestra el tiempo en segundos o minutos una vez terminado el juego.

Con algunas instrucciones y conceptos básicos de Python, ¡acabamos de crear un juego infinito basado en la función “random()”!

Ir más allá con Python: módulos y buenas prácticas

Bibliotecas sencillas de usar

Te recomiendo, para practicar, que te intereses en las siguientes bibliotecas de Python, que son muy útiles y relativamente fáciles de usar. Si no tienes inspiración, te doy algunas ideas de ejercicios que permiten usarlas:

  • re (documentación): permite buscar, extraer o manipular cadenas de caracteres usando patrones.
    • Ejercicio: crea un programa que valide direcciones de correo electrónico o busque números de teléfono en un texto.
  • requests (documentación): simplifica las interacciones con sitios web o APIs enviando solicitudes HTTP (GET, POST).
    • Ejercicio: escribe un programa que recupere datos de una API pública y muestre los resultados. Por ejemplo, una API del tiempo o de películas.
  • json (documentación): sirve para leer, escribir y manipular archivos JSON, un formato estándar para intercambiar datos.
    • Ejercicio: carga un archivo JSON que contenga información sobre usuarios y muestra sus nombres y edades.
  • ftplib (documentación): interactúa con servidores FTP para descargar o enviar archivos.
    • Ejercicio: conéctate a un servidor FTP público, explora sus carpetas y descarga un archivo.
  • csv (documentación): manipula archivos CSV, un formato común para almacenar datos tabulares.
    • Ejercicio: escribe un programa que lea un archivo CSV que contenga notas de alumnos y calcule su promedio.

¡Por experiencia, estos pequeños ejercicios te servirán en el futuro! Aunque depende mucho de los contextos en los que uses Python posteriormente.

Consejos sobre cómo escribir código limpio y legible en Python

Más allá de conocer los fundamentos del lenguaje Python y los módulos principales, uno de los principios básicos de este lenguaje (y de muchos otros) es saber escribir código legible y mantenible en el tiempo. Así que aquí tienes algunos consejos y buenas prácticas al respecto:

  • Adopta el estilo PEP 8: PEP 8 es la guía oficial de buenas prácticas en Python. Aquí tienes algunas reglas de esta guía:
    • Usa 4 espacios para la indentación (evita las tabulaciones).
    • Deja una línea vacía entre dos funciones o clases.
    • Dale nombres explícitos a tus variables y funciones (por ejemplo, calcular_promedio en lugar de cp).
    • Limita la longitud de las líneas a 79 caracteres para una mejor legibilidad.
    • Enlace de la guía Python PEP 8: peps.python.org/pep-0008/
  • Comenta tu código: añade comentarios para explicar las partes complejas o importantes (sin exagerar), una vez que hayas escrito algunos scripts y tengas que volver al primero, te darás cuenta de que no es tan fácil recordar por qué hicimos las cosas como las hicimos, aunque seamos nosotros los autores. Usa también docstrings para documentar las funciones:
def sumar(a, b):
    """
    Suma dos números y devuelve el resultado.
    :param a: Primer número
    :param b: Segundo número
    :return: Suma de los dos números
    """
  • Estructurar tu código: organiza tu código en funciones para evitar repeticiones y separa los archivos si tu programa se vuelve demasiado largo. Por ejemplo, coloca las funciones en un archivo separado e impórtalas.
  • Usar herramientas de análisis de código: herramientas como flake8 o black pueden ayudarte a verificar que tu código respeta los estándares PEP 8.
  • Probar y depurar regularmente: prueba tus funciones individualmente para detectar errores rápidamente. Python proporciona un módulo integrado, unittest, para crear pruebas automatizadas. Pero, más simplemente, considera todo lo que puede salir mal al usar tu código como lo hicimos con nuestros primeros scripts (¿si el usuario no introduce nada? ¿O algo que no sea un número, o una edad imposible o negativa? etc.).

Lectura: Guía de Pytest: Cómo Probar Código en Python

Conclusión

En este artículo, hemos estudiado los fundamentos del lenguaje Python con variables, bucles, funciones y condiciones, hemos creado nuestro primer script y hemos usado bibliotecas estándar. Python es un lenguaje muy versátil y rico, ideal tanto para principiantes como para desarrolladores avanzados.

En este punto, tienes todas las claves para empezar a crear tus propios proyectos, pero ten en cuenta que el camino aún es largo, ya que esto solo es un artículo introductorio. Por ejemplo, no hemos visto la gestión de errores, las clases, los paquetes, las constantes, la gestión de archivos, los subprocesos, el paso de parámetros a un script, etc.

Además, cada módulo requiere un aprendizaje en sí mismo. Pienso, por ejemplo, en python-pptx para la manipulación de archivos de PowerPoint, matplotlib para la generación de gráficos e histogramas, o incluso Pandas, TensorFlow y NumPy, muy usados en el campo de la inteligencia artificial y la ciencia de datos.

Por último, te recomiendo estos dos sitios para aprender a programar a través de minijuegos:

Descubre más: 20 Juegos Online Gratuitos para Programadores: Aprendizaje Fácil

¡El mejor aprendizaje es la práctica! No dudes en indicarnos en los comentarios si te gustó este artículo y si te gustaría seguir avanzando en este tema! 

Categorizado en:

Python,