Fundamentos de Python

Objetivos del módulo

Al completar este módulo serás capaz de:

  • Crear y utilizar variables en Python
  • Conocer los tipos de datos básicos
  • Usar operadores aritméticos, de comparación y lógicos
  • Controlar el flujo del programa con condicionales y bucles

¿Por qué empezar por los fundamentos?

Piensa en cuando aprendiste a conducir. Antes de salir a la carretera, tuviste que aprender dónde estaban los pedales, cómo funcionaba el volante, qué hacía cada marcha… Solo después de dominar estos controles básicos pudiste empezar a conducir de verdad.

Programar es igual. Antes de crear aplicaciones web, videojuegos o inteligencia artificial, necesitas dominar los fundamentos: cómo guardar información, cómo hacer cálculos, cómo tomar decisiones y cómo repetir tareas. Son las “piezas de Lego” con las que construirás todo lo demás.

En este capítulo aprenderás estos conceptos básicos. Puede parecer sencillo, pero no lo subestimes: todo programa, por complejo que sea, está hecho de estas piezas fundamentales.


Variables y asignación

Imagina que tienes un cajón donde guardas cosas. Para encontrarlas fácilmente, le pones una etiqueta con un nombre descriptivo: “facturas”, “fotos”, “llaves”… En programación, una variable funciona exactamente igual: es un nombre que le das a un dato para poder usarlo después.

La belleza de Python es que no necesitas decirle qué tipo de cosa vas a guardar. Simplemente le das un nombre, le asignas un valor, y Python se encarga del resto.

1# Asignación de variables
2nombre = "Ana"
3edad = 25
4altura = 1.75
5es_estudiante = True

Reglas para nombres de variables

Ten en cuenta
  • Deben empezar con una letra o guión bajo (_)
  • Solo pueden contener letras, números y guiones bajos
  • Son sensibles a mayúsculas: nombre y Nombre son diferentes
  • No pueden ser palabras reservadas de Python (if, for, class, etc.)
 1# Nombres válidos
 2mi_variable = 1
 3_privada = 2
 4camelCase = 3
 5CONSTANTE = 4
 6
 7# Nombres NO válidos (generarían error)
 8# 2variable = 5      # No puede empezar con número
 9# mi-variable = 6    # No puede contener guiones
10# class = 7          # Es palabra reservada

Tipos de datos básicos

No toda la información es igual. Piensa en las diferentes cosas que guardas en tu casa: la ropa va en el armario, la comida en la nevera, los libros en la estantería… Cada tipo de cosa necesita su “contenedor” adecuado.

En programación ocurre lo mismo. Los tipos de datos son las diferentes “formas” que puede tener la información:

  • Números para contar, medir y calcular (tu edad, el precio de algo, la temperatura)
  • Texto para palabras y mensajes (tu nombre, una dirección, un correo electrónico)
  • Booleanos para respuestas de sí/no (¿está encendido? ¿es mayor de edad?)

Veamos cada uno en detalle:

Los números son probablemente el tipo de dato más intuitivo. Los usas para contar cosas, hacer cálculos, medir… Python distingue entre números enteros y números con decimales.

Enteros (int)

1x = 42
2y = -17
3z = 0
4grande = 1_000_000  # Se pueden usar guiones bajos para legibilidad

Flotantes (float)

1pi = 3.14159
2temperatura = -40.5
3cientifico = 1.5e-10  # Notación científica

El texto es fundamental: nombres, mensajes, direcciones, contraseñas… todo lo que escribes es texto. En programación se llaman cadenas de texto (strings) porque son una “cadena” de caracteres uno detrás de otro.

Cadenas de texto (str)

1saludo = "Hola, mundo"
2nombre = 'También con comillas simples'
3multilinea = """
4Este texto
5tiene varias
6líneas
7"""

Operaciones con cadenas

1texto = "Python"
2print(len(texto))        # 6 - longitud
3print(texto.upper())     # PYTHON
4print(texto.lower())     # python
5print(texto[0])          # P - primer carácter
6print(texto[-1])         # n - último carácter
7print(texto[0:3])        # Pyt - subcadena

Los booleanos son el tipo más simple: solo pueden ser verdadero (True) o falso (False). Son como un interruptor de luz: encendido o apagado, sin términos medios.

Aunque parezcan simples, son fundamentales. Cada vez que tu programa tiene que tomar una decisión ("¿es el usuario mayor de edad?", “¿hay productos en el carrito?”), usa booleanos.

Valores booleanos (bool)

1activo = True
2completado = False
3
4# Resultados de comparaciones
5es_mayor = 5 > 3        # True
6es_igual = 10 == 10     # True
7es_diferente = "a" != "b"  # True

El valor None

A veces necesitas decir “esto no tiene valor” o “aún no sé qué valor tendrá”. Es como cuando en un formulario un campo está vacío: no es que tenga un espacio en blanco, es que no tiene nada.

Para esto existe None: representa la ausencia de valor.

1resultado = None
2
3def sin_retorno():
4    print("Esta función no devuelve nada")
5    # Implícitamente devuelve None
6
7valor = sin_retorno()
8print(valor)  # None

Verificar el tipo de una variable

1x = 42
2print(type(x))  # <class 'int'>
3
4y = "texto"
5print(type(y))  # <class 'str'>
6
7# Verificar si es de un tipo específico
8print(isinstance(x, int))   # True
9print(isinstance(y, str))   # True

Operadores

Los operadores son los símbolos que usas para hacer cosas con los datos: sumar, restar, comparar, combinar condiciones… Ya conoces la mayoría de las matemáticas del colegio, así que esto te resultará familiar.

Operadores aritméticos

Son las operaciones matemáticas de toda la vida, más algunas extras muy útiles en programación:

Operador Descripción Ejemplo Resultado
+ Suma 5 + 3 8
- Resta 5 - 3 2
* Multiplicación 5 * 3 15
/ División 5 / 3 1.666…
// División entera 5 // 3 1
% Módulo (resto) 5 % 3 2
** Potencia 5 ** 3 125
1# Ejemplos prácticos
2a, b = 17, 5
3
4print(f"División: {a / b}")        # 3.4
5print(f"División entera: {a // b}")  # 3
6print(f"Resto: {a % b}")           # 2
7print(f"Potencia: {2 ** 10}")      # 1024

Operadores de comparación

Estos operadores hacen preguntas y devuelven respuestas de sí/no (True o False). Son la base para que tu programa pueda tomar decisiones: “¿es el usuario mayor de edad?”, “¿tiene suficiente dinero?”…

Operador Descripción
== Igual a
!= Diferente de
< Menor que
> Mayor que
<= Menor o igual
>= Mayor o igual
1x = 10
2
3print(x == 10)   # True
4print(x != 5)    # True
5print(x > 5)     # True
6print(x <= 10)   # True

Operadores lógicos

Aquí es donde la cosa se pone interesante. En la vida real, a menudo combinas condiciones:

  • “Puedo salir a jugar si termino la tarea Y está soleado”
  • “Voy al cine si hay entradas O puedo verla en streaming”
  • “Voy a la playa si NO llueve”

Los operadores lógicos hacen exactamente eso:

Operador Significado Ejemplo de la vida real
and Ambas deben cumplirse “Tiene 18 años Y tiene carnet”
or Al menos una debe cumplirse “Es niño O es jubilado”
not Invierte la condición NO está lloviendo”
 1edad = 25
 2tiene_carnet = True
 3
 4# Puede conducir si tiene al menos 18 años Y tiene carnet
 5puede_conducir = edad >= 18 and tiene_carnet
 6print(puede_conducir)  # True
 7
 8# Acceso gratuito para menores de 12 O mayores de 65
 9acceso_gratis = edad < 12 or edad > 65
10print(acceso_gratis)  # False
11
12# Negación
13esta_lloviendo = False
14puedo_salir = not esta_lloviendo
15print(puedo_salir)  # True

Estructuras de control

Hasta ahora, tu código se ejecuta línea por línea, de arriba a abajo, sin desviarse. Pero los programas reales necesitan tomar decisiones y repetir tareas. Eso es exactamente lo que hacen las estructuras de control.

Condicionales: if, elif, else

Imagina que estás caminando y llegas a una bifurcación en el camino. Según alguna condición (¿está lloviendo? ¿hay obras?), eliges un camino u otro.

graph TD
    A["¿Llueve?"] -->|Sí| B["Coge paraguas"]
    A -->|No| C["Sal sin paraguas"]
    B --> D["Sal de casa"]
    C --> D

En Python, esto se hace con if (si), elif (si no, pero si…) y else (si no):

 1nota = 75
 2
 3if nota >= 90:
 4    print("Sobresaliente")
 5elif nota >= 70:
 6    print("Notable")
 7elif nota >= 50:
 8    print("Aprobado")
 9else:
10    print("Suspenso")
Indentación

En Python, la indentación (espacios al inicio de línea) es obligatoria y define los bloques de código. Se recomienda usar 4 espacios por nivel.

Operador ternario

Para condiciones simples en una línea:

1edad = 20
2estado = "adulto" if edad >= 18 else "menor"
3print(estado)  # adulto

Bucle for

Imagina que tienes 10 camisetas que doblar. No escribirías “dobla camiseta 1, dobla camiseta 2, dobla camiseta 3…” diez veces. Dirías: “Para cada camiseta de la pila: dóblala”.

El bucle for hace exactamente eso: repite un bloque de código para cada elemento de una secuencia:

 1# Iterar sobre una lista
 2frutas = ["manzana", "banana", "cereza"]
 3for fruta in frutas:
 4    print(f"Me gusta la {fruta}")
 5
 6# Iterar un rango de números
 7for i in range(5):
 8    print(i)  # 0, 1, 2, 3, 4
 9
10# range con inicio, fin y paso
11for i in range(0, 10, 2):
12    print(i)  # 0, 2, 4, 6, 8

Bucle while

A diferencia del for, el bucle while no sabe de antemano cuántas veces se repetirá. Simplemente dice: “Mientras esta condición sea verdadera, sigue repitiendo”.

Es como decir: “Sigue estudiando mientras no entiendas el tema” o “Sigue llamando mientras no contesten”.

1contador = 0
2while contador < 5:
3    print(f"Contador: {contador}")
4    contador += 1
Cuidado con bucles infinitos

Asegúrate de que la condición del while eventualmente sea falsa, o el programa nunca terminará.

Control de bucles: break y continue

A veces necesitas más control sobre tus bucles:

  • break: “¡Para! Sal del bucle ahora mismo” (como encontrar lo que buscabas y dejar de buscar)
  • continue: “Salta este elemento y pasa al siguiente” (como saltarte una canción que no te gusta)
 1# break: sale del bucle completamente
 2for i in range(10):
 3    if i == 5:
 4        break
 5    print(i)  # 0, 1, 2, 3, 4
 6
 7# continue: salta a la siguiente iteración
 8for i in range(5):
 9    if i == 2:
10        continue
11    print(i)  # 0, 1, 3, 4

Conversión de tipos

A veces tienes un dato de un tipo pero necesitas que sea de otro. El ejemplo más común: cuando un usuario escribe algo en un formulario web, siempre llega como texto. Si escribió “25” y tú quieres calcular su edad dentro de 10 años, necesitas convertir ese “25” (texto) a 25 (número).

Python te permite convertir entre tipos fácilmente:

 1# A entero
 2x = int("42")       # De string a int: 42
 3y = int(3.7)        # De float a int: 3 (trunca)
 4
 5# A flotante
 6a = float("3.14")   # De string a float: 3.14
 7b = float(5)        # De int a float: 5.0
 8
 9# A string
10s = str(42)         # "42"
11t = str(3.14)       # "3.14"
12
13# A booleano
14bool(1)      # True (cualquier número != 0)
15bool(0)      # False
16bool("")     # False (cadena vacía)
17bool("algo") # True (cadena no vacía)

Ejercicios prácticos

Ejercicio 1: Clasificador de edades

Escribe un programa que pida la edad al usuario y muestre:

  • “Niño” si tiene menos de 12 años
  • “Adolescente” si tiene entre 12 y 17 años
  • “Adulto” si tiene entre 18 y 64 años
  • “Jubilado” si tiene 65 años o más
 1edad = int(input("¿Cuántos años tienes? "))
 2
 3if edad < 12:
 4    print("Eres un niño")
 5elif edad < 18:
 6    print("Eres un adolescente")
 7elif edad < 65:
 8    print("Eres un adulto")
 9else:
10    print("Eres jubilado")
Ejercicio 2: Tabla de multiplicar

Crea un programa que pida un número y muestre su tabla de multiplicar del 1 al 10.

1numero = int(input("Introduce un número: "))
2
3print(f"Tabla de multiplicar del {numero}:")
4for i in range(1, 11):
5    resultado = numero * i
6    print(f"{numero} x {i} = {resultado}")
Ejercicio 3: Número primo

Escribe un programa que determine si un número es primo (solo divisible por 1 y por sí mismo).

 1numero = int(input("Introduce un número: "))
 2
 3if numero < 2:
 4    print(f"{numero} no es primo")
 5else:
 6    es_primo = True
 7    for i in range(2, int(numero ** 0.5) + 1):
 8        if numero % i == 0:
 9            es_primo = False
10            break
11    
12    if es_primo:
13        print(f"{numero} es primo")
14    else:
15        print(f"{numero} no es primo")

Quiz

🎮 Quiz: Fundamentos de Python

0 / 0
Cargando preguntas...

Anterior: Introducción Siguiente: Entorno Virtual