Cristhian Villegas
Backend10 min read0 views

Curso Python #3: Estructuras de Control — Condicionales y Bucles

Curso Python #3: Estructuras de Control — Condicionales y Bucles

Introduccion: tomar decisiones y repetir acciones en tu codigo

Bienvenido a la Parte 3 de 10 del curso de Python para principiantes. En los articulos anteriores aprendiste a usar variables y tipos de datos. Ahora vamos a dar un paso muy importante: ensenarle a tu programa a tomar decisiones y a repetir acciones.

Logo de Python

Piensa en tu dia a dia: si llueve, llevas paraguas; si no llueve, sales sin el. Repites la alarma cada manana hasta que te levantas. Eso mismo hace tu codigo con las estructuras de control: condicionales (tomar decisiones) y bucles (repetir acciones).

Al terminar este articulo seras capaz de escribir programas que reaccionen a diferentes situaciones y que repitan tareas automaticamente. Vamos a verlo paso a paso.

Condicionales: if, elif, else

Un condicional le dice a Python: "si se cumple esta condicion, haz esto; si no, haz otra cosa". La estructura basica es:

python
1if condicion:
2    # codigo que se ejecuta si la condicion es verdadera
3elif otra_condicion:
4    # codigo que se ejecuta si la segunda condicion es verdadera
5else:
6    # codigo que se ejecuta si ninguna condicion se cumplio
📌 Importante: En Python la indentacion (los espacios al inicio de la linea) es obligatoria. Usa siempre 4 espacios para indicar que un bloque de codigo pertenece a un if, elif o else.

Veamos un ejemplo cotidiano — decidir que ropa ponerte segun el clima:

python
1temperatura = 15
2
3if temperatura > 30:
4    print("Hace mucho calor, ponte ropa ligera")
5elif temperatura > 20:
6    print("El clima esta agradable, una camiseta esta bien")
7elif temperatura > 10:
8    print("Hace un poco de frio, lleva una chaqueta")
9else:
10    print("Hace mucho frio, abrigate bien")

En este ejemplo Python evalua las condiciones de arriba hacia abajo. En cuanto encuentra una que sea verdadera, ejecuta ese bloque y se salta el resto. Si ninguna se cumple, ejecuta el bloque else.

Otro ejemplo clasico — saber si una persona puede votar:

python
1edad = int(input("¿Cuantos anos tienes? "))
2
3if edad >= 18:
4    print("Puedes votar")
5else:
6    print("Aun no puedes votar")

Operadores de comparacion

Para que un condicional funcione, necesitas comparar valores. Python tiene estos operadores de comparacion:

OperadorSignificadoEjemploResultado
==Igual a5 == 5True
!=Diferente de5 != 3True
>Mayor que10 > 7True
<Menor que3 < 8True
>=Mayor o igual que5 >= 5True
<=Menor o igual que4 <= 3False
⚠️ Cuidado: No confundas = (asignar un valor a una variable) con == (comparar si dos valores son iguales). Es un error muy comun entre principiantes.

Veamos unos ejemplos rapidos:

python
1nombre = "Ana"
2numero = 42
3
4print(nombre == "Ana")    # True
5print(nombre != "Carlos") # True
6print(numero > 50)        # False
7print(numero <= 42)       # True

Operadores logicos: and, or, not

A veces necesitas combinar varias condiciones. Para eso existen los operadores logicos:

OperadorSignificadoEjemplo
andAmbas condiciones deben ser verdaderasedad > 18 and tiene_licencia
orAl menos una condicion debe ser verdaderaes_estudiante or es_jubilado
notInvierte el resultado (verdadero se vuelve falso)not esta_lloviendo

Ejemplo practico — verificar si alguien puede entrar a un bar:

python
1edad = 20
2tiene_identificacion = True
3
4if edad >= 18 and tiene_identificacion:
5    print("Puedes entrar")
6elif edad >= 18 and not tiene_identificacion:
7    print("Eres mayor de edad pero necesitas tu identificacion")
8else:
9    print("No puedes entrar, eres menor de edad")

Ejemplo con or — descuento en un cine:

python
1edad = 65
2es_estudiante = False
3
4if edad < 12 or edad > 60 or es_estudiante:
5    print("Tienes descuento en la entrada")
6else:
7    print("Pagas precio normal")

Bucle while: repetir mientras se cumpla una condicion

El bucle while repite un bloque de codigo mientras una condicion sea verdadera. Es como decir: "mientras no termine, sigue haciendolo".

python
1contador = 1
2
3while contador <= 5:
4    print("Repeticion numero", contador)
5    contador = contador + 1
6
7print("¡Listo! El bucle termino")

Salida:

bash
1Repeticion numero 1
2Repeticion numero 2
3Repeticion numero 3
4Repeticion numero 4
5Repeticion numero 5
6¡Listo! El bucle termino
⚠️ Cuidado con los bucles infinitos: Si la condicion nunca se vuelve falsa, el programa se quedara ejecutandose para siempre. Asegurate siempre de que algo dentro del bucle haga que la condicion eventualmente sea False.

Ejemplo practico — pedir una contrasena hasta que sea correcta:

python
1contrasena_correcta = "python123"
2intento = ""
3
4while intento != contrasena_correcta:
5    intento = input("Escribe la contrasena: ")
6
7print("¡Contrasena correcta! Bienvenido")

Bucle for: recorrer secuencias

El bucle for recorre los elementos de una secuencia uno por uno. Es ideal cuando sabes de antemano cuantas veces quieres repetir algo o cuando quieres recorrer una lista.

Usando range()

La funcion range() genera una secuencia de numeros. Es la forma mas comun de usar for cuando quieres repetir algo un numero fijo de veces:

python
1# Imprimir numeros del 0 al 4
2for i in range(5):
3    print(i)
4
5# Imprimir numeros del 1 al 5
6for i in range(1, 6):
7    print(i)
8
9# Imprimir numeros de 2 en 2: 0, 2, 4, 6, 8
10for i in range(0, 10, 2):
11    print(i)
💡 Tip: range(5) genera los numeros 0, 1, 2, 3, 4 (no incluye el 5). Esto es muy comun en programacion y se llama "rango exclusivo".

Recorriendo listas

Puedes usar for para recorrer cualquier lista:

python
1frutas = ["manzana", "banana", "naranja", "uva"]
2
3for fruta in frutas:
4    print("Me gusta la", fruta)

Salida:

bash
1Me gusta la manzana
2Me gusta la banana
3Me gusta la naranja
4Me gusta la uva

Recorriendo strings

Un string es una secuencia de caracteres, asi que tambien puedes recorrerlo:

python
1for letra in "Python":
2    print(letra)

break y continue: controlar el flujo del bucle

A veces necesitas salir de un bucle antes de tiempo o saltarte una iteracion. Para eso existen break y continue.

break: salir del bucle inmediatamente

python
1# Buscar un numero en una lista
2numeros = [10, 25, 33, 47, 55, 60]
3
4for numero in numeros:
5    if numero == 47:
6        print("¡Encontre el 47!")
7        break
8    print("Revisando:", numero)

Salida:

bash
1Revisando: 10
2Revisando: 25
3Revisando: 33
4¡Encontre el 47!

Cuando Python llega al break, sale del bucle inmediatamente sin revisar los numeros restantes.

continue: saltar a la siguiente iteracion

python
1# Imprimir solo los numeros pares
2for i in range(1, 11):
3    if i % 2 != 0:
4        continue  # Si es impar, saltar al siguiente
5    print(i)

Salida:

bash
12
24
36
48
510

Con continue, Python se salta el resto del codigo dentro del bucle para esa iteracion y pasa directamente a la siguiente.

Bucles anidados

Un bucle anidado es un bucle dentro de otro bucle. Cada vez que el bucle exterior se ejecuta una vez, el bucle interior se ejecuta completamente.

Ejemplo clasico — tabla de multiplicar:

python
1# Tabla de multiplicar del 1 al 5
2for i in range(1, 6):
3    print(f"--- Tabla del {i} ---")
4    for j in range(1, 11):
5        resultado = i * j
6        print(f"{i} x {j} = {resultado}")
7    print()  # Linea en blanco entre tablas

Esto imprimira la tabla de multiplicar del 1 al 5, cada una con multiplicaciones del 1 al 10.

Otro ejemplo — dibujar un rectangulo con asteriscos:

python
1filas = 4
2columnas = 8
3
4for i in range(filas):
5    for j in range(columnas):
6        print("*", end="")
7    print()  # Salto de linea al final de cada fila

Salida:

bash
1********
2********
3********
4********
💡 Tip: El parametro end="" en print() evita que se agregue un salto de linea despues de cada asterisco. Asi todos los asteriscos de una fila se imprimen en la misma linea.

Ejemplo practico: juego de adivinar un numero

Vamos a combinar todo lo que aprendimos para crear un juego interactivo. El programa pensara en un numero aleatorio y tu tendras que adivinarlo:

python
1import random
2
3# El programa "piensa" un numero entre 1 y 100
4numero_secreto = random.randint(1, 100)
5intentos = 0
6adivinado = False
7
8print("=== Juego: Adivina el Numero ===")
9print("He pensado en un numero entre 1 y 100.")
10print("¡Intenta adivinarlo!")
11print()
12
13while not adivinado:
14    # Pedir un numero al usuario
15    respuesta = input("Tu respuesta: ")
16
17    # Verificar que sea un numero valido
18    if not respuesta.isdigit():
19        print("Por favor, escribe un numero valido.")
20        continue
21
22    numero_usuario = int(respuesta)
23    intentos = intentos + 1
24
25    # Comparar con el numero secreto
26    if numero_usuario < numero_secreto:
27        print("Demasiado bajo. Intenta con un numero mas alto.")
28    elif numero_usuario > numero_secreto:
29        print("Demasiado alto. Intenta con un numero mas bajo.")
30    else:
31        adivinado = True
32        print(f"¡Felicidades! Adivinaste el numero {numero_secreto}")
33        print(f"Lo lograste en {intentos} intentos.")
34
35# Mensaje final segun el rendimiento
36if intentos <= 5:
37    print("¡Increible! Eres un genio.")
38elif intentos <= 10:
39    print("¡Muy bien! Buen trabajo.")
40else:
41    print("Lo lograste, pero puedes mejorar. ¡Intenta de nuevo!")
📌 ¿Que hace este programa?
  • Usa random.randint(1, 100) para generar un numero aleatorio entre 1 y 100
  • Usa un bucle while que se repite hasta que el usuario adivine
  • Usa continue para manejar entradas invalidas
  • Usa condicionales if/elif/else para dar pistas al usuario
  • Al final, usa condicionales para evaluar el rendimiento del jugador

Resumen y proximo articulo

En este articulo aprendiste las herramientas mas fundamentales para controlar el flujo de tu programa:

  • Condicionales (if, elif, else): permiten que tu programa tome decisiones
  • Operadores de comparacion (==, !=, >, <, >=, <=): comparan valores para crear condiciones
  • Operadores logicos (and, or, not): combinan varias condiciones
  • Bucle while: repite codigo mientras una condicion sea verdadera
  • Bucle for: recorre secuencias de elementos (numeros, listas, strings)
  • break y continue: controlan cuando salir de un bucle o saltar iteraciones
  • Bucles anidados: un bucle dentro de otro para patrones mas complejos

Con estas herramientas ya puedes crear programas que realmente hacen cosas interesantes. En el proximo articulo (Parte 4 de 10) aprenderemos sobre funciones: como organizar tu codigo en bloques reutilizables para no repetir lo mismo una y otra vez.

Share:
CV

Cristhian Villegas

Software Engineer specializing in Java, Spring Boot, Angular & AWS. Building scalable distributed systems with clean architecture.

Comments

Sign in to leave a comment

No comments yet. Be the first!

Related Articles