condicionales en Python ejercicios resueltos chuletario

Condicionales en Python — ejercicios con solución y chuletario completo

Los condicionales en Python ejercicios con solución son la mejor forma de afianzar if, elif y else. Ya viste la teoría y practicaste con programas reales. Ahora toca resolver por tu cuenta.

En este artículo encontrarás cuatro ejercicios en tres niveles de dificultad, con especial atención al error de confundir and con or en condiciones compuestas, uno de los más traicioneros de FP1.

Como siempre: intenta resolverlo, usa la pista si llevas más de 10 minutos atascado, y compara con la solución comentada, recuerdas además echar un vistazo al desarrollo del código en pythontutor.com

Cómo usar este artículo

Lee el enunciado → intenta resolverlo en VS Code → si no avanzas, lee la pista → compara tu solución. No saltes directamente a las soluciones.

Estos condicionales en Python ejercicios están pensados para que salgas sabiendo aplicarlos en cualquier situación.


Condicionales en Python Ejercicios — Nivel básico

Ejercicio 1 — Sistema de calificación de películas

Escribe un programa que pida la edad del usuario y la clasificación de una película, y determine si puede verla. Las clasificaciones son: G (todos los públicos), PG (recomendado acompañamiento de adultos, menores de 10), PG-13 (no recomendado menores de 13), R (no recomendado menores de 17), NC-17 (solo mayores de 18).

La salida debe ser:

Edad: 15
Clasificación de la película: R

--- Resultado ---
Clasificación R: no recomendado para menores de 17 años
Tu edad: 15 años
Acceso: ✗ No puedes ver esta película sin acompañante adulto

💡 Pista: Usa elif para cada clasificación en orden de más a menos restrictiva. El error clásico aquí es usar or cuando necesitas and — por ejemplo para «mayor de 13 Y menor de 17». Recuerda: and significa que ambas condiciones deben cumplirse al mismo tiempo, or significa que basta con que se cumpla una.


Ejercicio 2 — Calculadora de impuestos por tramo de renta

En España el IRPF se calcula por tramos. Escribe un programa que pida el salario anual bruto y calcule el impuesto a pagar según estos tramos simplificados:

  • Hasta 12.450€ → 19%
  • De 12.450€ a 20.200€ → 24%
  • De 20.200€ a 35.200€ → 30%
  • De 35.200€ a 60.000€ → 37%
  • Más de 60.000€ → 45%

La salida debe ser:

Salario bruto anual (€): 28000

--- Cálculo de IRPF ---
Salario bruto:    28000.0 €
Tramo:            30%
Impuesto:         8400.0 €
Salario neto:     19600.0 €
Salario mensual neto: 1633.33 €

💡 Pista: Este es un sistema de tramos simplificado — aplica el porcentaje sobre todo el salario, no solo sobre la parte del tramo (eso sería más complejo). El error típico aquí es el orden de los elif — si pones el tramo del 45% antes que el del 37%, todos los salarios altos caerán en el 45% aunque deberían ir al 37%. Ordena siempre de menor a mayor salario.


Condicionales en Python Ejercicios — Nivel Intermedio

Ejercicio 3 — Validador de contraseña segura

Escribe un programa que pida una contraseña y evalúe su seguridad según estos criterios, mostrando qué criterios cumple y cuáles no:

  • Mínimo 8 caracteres → +1 punto
  • Contiene mayúsculas → +1 punto
  • Contiene minúsculas → +1 punto
  • Contiene números → +1 punto
  • Contiene caracteres especiales (!@#$%^&*) → +1 punto

Clasificación final: 0-2 puntos = Muy débil, 3 puntos = Débil, 4 puntos = Fuerte, 5 puntos = Muy fuerte.

Contraseña: Python@2024

--- Análisis de contraseña ---
✓ Longitud suficiente (10 caracteres)
✓ Contiene mayúsculas
✓ Contiene minúsculas
✓ Contiene números
✓ Contiene caracteres especiales

Puntuación: 5/5
Seguridad: Muy fuerte 🔒

💡 Pista: Usa any() con una expresión generadora para comprobar cada criterio, por ejemplo any(c.isupper() for c in contrasena) comprueba si algún carácter es mayúscula. El error de and/or aparece aquí si intentas combinar condiciones: «tiene mayúsculas Y minúsculas» necesita and, «tiene mayúsculas O minúsculas» necesita or. Son cosas distintas, piénsalo bien antes de escribirlo.


Condicionales en Python Ejercicios — Desafío Final

Ejercicio 4 — Juego de adivinar el número

El clásico. Escribe un programa que genere un número aleatorio entre 1 y 100 y deje al jugador adivinarlo. El programa debe dar pistas de «demasiado alto» o «demasiado bajo» y llevar la cuenta de intentos. Al final muestra cuántos intentos necesitó.

=== ADIVINA EL NÚMERO ===
Estoy pensando en un número entre 1 y 100...

Intento 1 — Tu número: 50
→ Demasiado bajo

Intento 2 — Tu número: 75
→ Demasiado alto

Intento 3 — Tu número: 63
→ Demasiado bajo

Intento 4 — Tu número: 69
→ ¡Correcto! 🎉

--- Resultado ---
Adivinaste en 4 intentos
Valoración: Muy bien 👏

Valoración según intentos: 1-3 = Increíble, 4-6 = Muy bien, 7-10 = Bien, más de 10 = Sigue practicando.

💡 Pistas:

  • Importa random al principio: import random y genera el número con random.randint(1, 100)
  • Necesitas un bucle while para repetir hasta que acierte, veremos los bucles en profundidad en el próximo tema, pero para este ejercicio funciona así: while adivinado == False: y cuando acierte cambia adivinado = True
  • El error de and/or aparece si intentas comprobar el rango de intentos para la valoración: «entre 4 y 6 intentos» es intentos >= 4 and intentos <= 6, NO intentos >= 4 or intentos <= 6 — el or dejaría pasar cualquier número

Soluciones Comentadas

Solución Ejercicio 1:

# Sistema de calificación de películas
edad = int(input("Edad: "))
clasificacion = input("Clasificación de la película: ").upper()

restricciones = {
    "G": (0, "todos los públicos"),
    "PG": (10, "recomendado acompañamiento menores de 10"),
    "PG-13": (13, "no recomendado menores de 13"),
    "R": (17, "no recomendado menores de 17"),
    "NC-17": (18, "solo mayores de 18")
}

print(f"\n--- Resultado ---")

if clasificacion not in restricciones:
    print("Clasificación no reconocida")
else:
    edad_minima, descripcion = restricciones[clasificacion]
    print(f"Clasificación {clasificacion}: {descripcion}")
    print(f"Tu edad: {edad} años")

    if edad >= edad_minima:
        print("Acceso: ✓ Puedes ver esta película")
    else:
        print("Acceso: ✗ No puedes ver esta película sin acompañante adulto")

Solución Ejercicio 2:

# Calculadora de impuestos IRPF
salario = float(input("Salario bruto anual (€): "))

if salario <= 12450:
    tramo = 19
elif salario <= 20200:
    tramo = 24
elif salario <= 35200:
    tramo = 30
elif salario <= 60000:
    tramo = 37
else:
    tramo = 45

impuesto = round(salario * tramo / 100, 2)
neto = round(salario - impuesto, 2)
mensual = round(neto / 12, 2)

print(f"\n--- Cálculo de IRPF ---")
print(f"Salario bruto:        {salario} €")
print(f"Tramo:                {tramo}%")
print(f"Impuesto:             {impuesto} €")
print(f"Salario neto:         {neto} €")
print(f"Salario mensual neto: {mensual} €")

Solución Ejercicio 3:

# Validador de contraseña segura
contrasena = input("Contraseña: ")
especiales = "!@#$%^&*"
puntos = 0

print(f"\n--- Análisis de contraseña ---")

if len(contrasena) >= 8:
    print(f"✓ Longitud suficiente ({len(contrasena)} caracteres)")
    puntos += 1
else:
    print(f"✗ Demasiado corta ({len(contrasena)} caracteres, mínimo 8)")

if any(c.isupper() for c in contrasena):
    print("✓ Contiene mayúsculas")
    puntos += 1
else:
    print("✗ Sin mayúsculas")

if any(c.islower() for c in contrasena):
    print("✓ Contiene minúsculas")
    puntos += 1
else:
    print("✗ Sin minúsculas")

if any(c.isdigit() for c in contrasena):
    print("✓ Contiene números")
    puntos += 1
else:
    print("✗ Sin números")

if any(c in especiales for c in contrasena):
    print("✓ Contiene caracteres especiales")
    puntos += 1
else:
    print("✗ Sin caracteres especiales")

if puntos <= 2:
    seguridad = "Muy débil 🔓"
elif puntos == 3:
    seguridad = "Débil 🔐"
elif puntos == 4:
    seguridad = "Fuerte 🔒"
else:
    seguridad = "Muy fuerte 🔒"

print(f"\nPuntuación: {puntos}/5")
print(f"Seguridad: {seguridad}")

Solución Ejercicio 4:

# Juego de adivinar el número
import random

numero_secreto = random.randint(1, 100)
intentos = 0
adivinado = False

print("=== ADIVINA EL NÚMERO ===")
print("Estoy pensando en un número entre 1 y 100...\n")

while not adivinado:
    intentos += 1
    intento = int(input(f"Intento {intentos} — Tu número: "))

    if intento < numero_secreto:
        print("→ Demasiado bajo\n")
    elif intento > numero_secreto:
        print("→ Demasiado alto\n")
    else:
        print("→ ¡Correcto! 🎉")
        adivinado = True

print(f"\n--- Resultado ---")
print(f"Adivinaste en {intentos} intentos")

if intentos <= 3:
    print("Valoración: Increíble 🏆")
elif intentos <= 6:
    print("Valoración: Muy bien 👏")
elif intentos <= 10:
    print("Valoración: Bien ✓")
else:
    print("Valoración: Sigue practicando 💪")

Chuletario — Condicionales en Python

Este chuletario de condicionales en Python ejercicios recoge todo lo esencial del tema en un solo lugar.

# ============================================
# CHULETARIO — Condicionales en Python
# Sergio Learns · sergiolearns.com
# ============================================

# ESTRUCTURA BÁSICA
if condicion:
    # se ejecuta si condicion es True
elif otra_condicion:
    # se ejecuta si otra_condicion es True
else:
    # se ejecuta si ninguna condicion es True

# REGLAS OBLIGATORIAS
# 1. Los : al final son siempre obligatorios
# 2. La indentación (4 espacios) es siempre obligatoria
# 3. El orden de elif importa — de mayor a menor restricción

# OPERADORES DE COMPARACIÓN
x == 5      # igual (DOBLE ==)
x != 5      # distinto
x > 5       # mayor que
x < 5       # menor que
x >= 5      # mayor o igual
x <= 5      # menor o igual

# OJO: = asigna, == compara
x = 5       # asignación
x == 5      # comparación → True o False

# OPERADORES LÓGICOS
x > 3 and x < 10    # ambas True → True si 3 < x < 10
x < 3 or x > 10     # al menos una True
not (x > 5)         # invierte → True si x <= 5

# AND vs OR — el error más común
# AND: las DOS condiciones deben cumplirse
edad >= 18 and tiene_carnet    # mayor de 18 Y con carnet

# OR: basta con que UNA se cumpla
es_estudiante or es_jubilado   # estudiante O jubilado

# CONDICIONAL EN UNA LÍNEA (ternario)
resultado = "Aprobado" if nota >= 5 else "Suspenso"

# PATRÓN MÁS USADO EN FP1
# Clasificar con if/elif/else y guardar en variable
if valor >= 9:
    categoria = "Sobresaliente"
elif valor >= 7:
    categoria = "Notable"
elif valor >= 5:
    categoria = "Aprobado"
else:
    categoria = "Suspenso"

# COMPROBAR PERTENENCIA
if "@" in email:          # el @ está en el email
if "a" not in palabra:    # la a NO está en la palabra

# COMPROBAR TIPO
if type(x) == int:        # x es entero
if isinstance(x, float):  # x es decimal (más pythónico)

# ERRORES TÍPICOS
# 1. Olvidar los :      → SyntaxError
# 2. Mala indentación   → IndentationError
# 3. Usar = en vez de == → SyntaxError
# 4. Elif en orden incorrecto → error silencioso
# 5. Confundir and/or   → error silencioso

Publicaciones Similares

2 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *