cv.cm

Programación · Lenguajes de programación

Tutorial de Python para principiantes

6 min de lectura

Respuesta corta

Python es un lenguaje interpretado de propósito general, conocido por su sintaxis legible que usa la indentación en lugar de llaves. Instala Python 3, guarda print("Hello, world") en hello.py y ejecuta python3 hello.py. Sus ideas centrales son los tipos dinámicos, las funciones definidas con def, las listas, diccionarios y conjuntos integrados, las excepciones con try/except y una amplia biblioteca estándar.

Abrir Probador de regex

Qué es Python y para qué se usa

Python es un lenguaje de alto nivel con tipado dinámico, publicado por primera vez por Guido van Rossum en 1991. El código lo ejecuta un intérprete (el de referencia es CPython), así que no hay un paso de compilación aparte. Se usa en análisis de datos y aprendizaje automático (NumPy, pandas, PyTorch), back ends web (Django, Flask, FastAPI), scripts de automatización, computación científica y enseñanza. Python 2 llegó al fin de su vida útil en 2020, así que aprende siempre Python 3.

Instalar Python y ejecutar Hello, world

Descarga un instalador desde python.org (Windows, macOS) o usa el gestor de paquetes en Linux. Comprueba la instalación con python3 --version (en Windows el comando suele ser py o python). Guarda este archivo como hello.py:

print("Hello, world")
python3 hello.py
# Hello, world

Si ejecutas python3 sin ningún archivo se abre el intérprete interactivo (REPL), útil para probar una línea cada vez.

Variables y tipos básicos

Una variable se crea al asignarle un valor. No se declara el tipo: el valor lleva su propio tipo, y type(x) te dice cuál es.

TipoEjemploNotas
int42, -7, 10**20Números enteros de cualquier tamaño
float3.14, 1e-3Punto flotante de 64 bits
boolTrue, FalseCon mayúscula inicial
str"hi", 'hi'Texto Unicode inmutable
NoneNoneLa ausencia de un valor
name = "Ada"
age = 36
height = 1.65
print(f"{name} is {age} years old")  # Ada is 36 years old
print(7 / 2, 7 // 2, 7 % 2)          # 3.5 3 1
print(int("12") + 1)                 # 13

Control de flujo: if, for y while

Los bloques empiezan con dos puntos y se definen por la indentación (por convención, 4 espacios). Los bucles for recorren cualquier secuencia; range(n) genera los números de 0 a n−1.

score = 72
if score >= 90:
    grade = "A"
elif score >= 70:
    grade = "B"
else:
    grade = "C"
print(grade)  # B
for i in range(3):
    print(i)  # 0, then 1, then 2
n = 10
while n > 1:
    n = n // 2
print(n)  # 1

Funciones

Define funciones con def. Los parámetros pueden tener valores por defecto y quien llama puede pasar argumentos por nombre. Una función sin return devuelve None.

def greet(name, greeting="Hello"):
    return f"{greeting}, {name}!"
print(greet("Lin"))                 # Hello, Lin!
print(greet("Lin", greeting="Hi"))  # Hi, Lin!
square = lambda x: x * x
print(square(5))                    # 25

Las anotaciones de tipo, como def area(w: float, h: float) -> float:, documentan la intención y permiten que herramientas como mypy revisen tu código, pero el intérprete no las impone.

Listas, tuplas, diccionarios y conjuntos

TipoLiteralOrdenadoMutableUso habitual
list[1, 2, 3]SíSíUna secuencia que modificas
tuple(1, 2)SíNoUn grupo fijo de valores
dict{"a": 1}Orden de inserciónSíBúsqueda de valor por clave
set{1, 2}NoSíElementos únicos, pruebas de pertenencia
nums = [3, 1, 2]
nums.append(5)
nums.sort()
print(nums, nums[0], nums[-1], nums[1:3])  # [1, 2, 3, 5] 1 5 [2, 3]
ages = {"ann": 31, "bob": 25}
ages["cy"] = 40
for person, age in ages.items():
    print(person, age)
print(ages.get("zed", 0))  # 0
squares = [x * x for x in range(5) if x % 2 == 0]
print(squares)  # [0, 4, 16]

La última línea es una comprensión de listas, una de las características más típicas de Python: construye una lista a partir de un bucle y un filtro opcional en una sola expresión. Las comprensiones de diccionarios y conjuntos funcionan igual.

Características distintivas: desempaquetado, with y generadores

a, b = 1, 2
a, b = b, a            # swap without a temporary
first, *rest = [1, 2, 3, 4]
print(first, rest)     # 1 [2, 3, 4]
with open("notes.txt", "w", encoding="utf-8") as f:
    f.write("line one\n")   # file is closed automatically
def countdown(n):
    while n > 0:
        yield n
        n -= 1
print(list(countdown(3)))  # [3, 2, 1]

La instrucción with ejecuta por ti el código de preparación y de limpieza (aquí, cierra el archivo incluso si ocurre un error). Una función que usa yield es un generador: produce valores de forma perezosa, uno a uno, lo que ahorra memoria con datos grandes.

Manejo de errores con try y except

Los errores se lanzan como excepciones. Captura los tipos de excepción concretos que esperas y usa finally para el código que siempre debe ejecutarse.

def parse_age(text):
    try:
        age = int(text)
    except ValueError:
        print(f"not a number: {text!r}")
        return None
    if age < 0:
        raise ValueError("age cannot be negative")
    return age
print(parse_age("41"))   # 41
print(parse_age("abc"))  # not a number: 'abc', then None

Un programa completo pequeño: contador de palabras

Este script lee un archivo de texto indicado en la línea de comandos e imprime las cinco palabras más frecuentes. Usa solo la biblioteca estándar.

import sys
from collections import Counter
def top_words(path, n=5):
    with open(path, encoding="utf-8") as f:
        words = f.read().lower().split()
    cleaned = [w.strip(".,;:!?\"'()") for w in words]
    return Counter(w for w in cleaned if w).most_common(n)
if __name__ == "__main__":
    if len(sys.argv) != 2:
        sys.exit("usage: python3 count.py FILE")
    try:
        for word, count in top_words(sys.argv[1]):
            print(f"{count:5}  {word}")
    except FileNotFoundError:
        sys.exit(f"file not found: {sys.argv[1]}")

Ejecútalo con python3 count.py notes.txt. La comprobación if __name__ == "__main__": permite importar el archivo como módulo sin ejecutar la parte de script.

Errores comunes de principiantes

  • Mezclar tabuladores y espacios, o indentar de forma inconsistente, provoca IndentationError. Configura tu editor para insertar 4 espacios.
  • = asigna y == compara. Usa is solo con None (if x is None).
  • input() siempre devuelve una cadena; conviértela con int() o float() antes de hacer cálculos.
  • Copiar una lista con b = a no la copia: ambos nombres apuntan a la misma lista. Usa b = a.copy() o b = list(a).
  • Instala los paquetes dentro de un entorno virtual (python3 -m venv .venv) en lugar de en el Python del sistema.

Adónde ir después

Trabaja el Tutorial oficial de Python y luego explora la Library Reference para conocer módulos como pathlib, json, datetime e itertools. Aprende pip y los entornos virtuales para usar paquetes de terceros y escribe pruebas con unittest o pytest. Después elige un camino: web (Django o FastAPI), datos (pandas) o automatización.

Preguntas frecuentes

¿Es Python bueno para principiantes?

Sí. Su sintaxis es corta y cercana al inglés sencillo, los errores se informan con claridad y puedes probar el código línea a línea en el REPL. Además se usa mucho en la industria, así que lo que aprendas seguirá siendo útil.

¿Python es compilado o interpretado?

CPython compila el código fuente a bytecode y luego interpreta ese bytecode, todo de forma automática al ejecutar un script. Nunca ejecutas un paso de compilación aparte.

¿Cuál es la diferencia entre una lista y una tupla?

Una lista es mutable: puedes añadir, quitar y cambiar elementos. Una tupla es inmutable, por lo que se usa para grupos fijos de valores y puede ser clave de un diccionario.

¿Por qué mi código Python es lento?

Los bucles de Python puro son más lentos que los de los lenguajes compilados. Usa funciones integradas, comprensiones y bibliotecas como NumPy, que ejecutan sus bucles internos en C.

¿Debo usar python o python3 en la línea de comandos?

En macOS y en la mayoría de los sistemas Linux usa python3, porque python puede no existir o apuntar a otra cosa. En Windows lo habitual es el lanzador py.

Todos los tutoriales de programación