condicionales en Python práctica programas VS Code

Condicionales en Python — práctica real con 3 programas en VS Code

Los condicionales en Python práctica real es lo que toca ahora. En el artículo anterior vimos la teoría de los condicionales en Python. Ahora toca escribir código real.

En este artículo construimos tres programas desde cero en VS Code usando if, elif y else en situaciones reales: un validador de formulario de registro, un sistema de descuentos por nivel de cliente y un clasificador de notas con menú. Cada programa empieza simple y va ganando complejidad, igual que en los ejercicios de FP1.

Crea una carpeta llamada practica_condicionales y un archivo separado para cada programa.

Condicionales en Python práctica — Programa 1: Validador de registro

Este programa simula la validación básica que hace cualquier web cuando te registras. Crea el archivo validador.py.

Versión simple primero:

# Validador de registro — versión simple
print("=== REGISTRO DE USUARIO ===\n")

usuario = input("Nombre de usuario: ")
edad = int(input("Edad: "))
contrasena = input("Contraseña: ")

if len(usuario) < 3:
    print("Error: el usuario debe tener al menos 3 caracteres")
elif edad < 18:
    print("Error: debes ser mayor de 18 años")
elif len(contrasena) < 6:
    print("Error: la contraseña debe tener al menos 6 caracteres")
else:
    print("Registro completado con éxito")
```

Resultado con datos incorrectos:
```
=== REGISTRO DE USUARIO ===

Nombre de usuario: Jo
Edad: 20
Contraseña: 1234

Error: el usuario debe tener al menos 6 caracteres

Funciona pero solo detecta el primer error. La versión mejorada detecta todos los errores a la vez y da feedback completo:

# Validador de registro — versión mejorada
print("=== REGISTRO DE USUARIO ===\n")

usuario = input("Nombre de usuario: ")
edad = int(input("Edad: "))
contrasena = input("Contraseña: ")
email = input("Email: ")

errores = 0

print("\n--- Resultado de la validación ---")

if len(usuario) < 3:
    print("✗ Usuario demasiado corto (mínimo 3 caracteres)")
    errores += 1
else:
    print("✓ Usuario válido")

if edad < 18:
    print("✗ Debes ser mayor de 18 años")
    errores += 1
else:
    print("✓ Edad válida")

if len(contrasena) < 6:
    print("✗ Contraseña demasiado corta (mínimo 6 caracteres)")
    errores += 1
elif not any(c.isdigit() for c in contrasena):
    print("✗ La contraseña debe contener al menos un número")
    errores += 1
else:
    print("✓ Contraseña válida")

if "@" not in email or "." not in email:
    print("✗ Email no válido")
    errores += 1
else:
    print("✓ Email válido")

print(f"\n{'Registro completado' if errores == 0 else f'Registro fallido — {errores} error/es encontrado/s'}")
```

Resultado:
```
=== REGISTRO DE USUARIO ===

Nombre de usuario: Jo
Edad: 20
Contraseña: abc
Email: sergio@sergiolearns.com

--- Resultado de la validación ---
✗ Usuario demasiado corto (mínimo 3 caracteres)
✓ Edad válida
✗ Contraseña demasiado corta (mínimo 6 caracteres)
✓ Email válido

Registro fallido — 2 error/es encontrado/s

Fíjate en el uso del operador ternario al final para el mensaje de resultado, una sola línea en vez de un if/else completo. También usamos not in para comprobar si @ o . no están en el email, es una forma muy pythónica de hacer comprobaciones de texto.

Condicionales en Python práctica Programa 2: Sistema de descuentos por nivel de cliente

Este programa clasifica clientes según su gasto anual y aplica descuentos distintos. Crea el archivo descuentos_cliente.py.

# Sistema de descuentos por nivel de cliente
print("=== SISTEMA DE FIDELIZACIÓN ===\n")

nombre = input("Nombre del cliente: ")
gasto_anual = float(input("Gasto anual (€): "))
es_socio = input("¿Es socio? (s/n): ").lower() == "s"

# Determinar nivel y descuento base
if gasto_anual >= 5000:
    nivel = "Platinum"
    descuento = 20
elif gasto_anual >= 2000:
    nivel = "Gold"
    descuento = 15
elif gasto_anual >= 500:
    nivel = "Silver"
    descuento = 10
else:
    nivel = "Básico"
    descuento = 5

# Descuento extra por ser socio
if es_socio:
    descuento_extra = 5
    descuento_total = descuento + descuento_extra
else:
    descuento_extra = 0
    descuento_total = descuento

# Calcular ahorro
ahorro_anual = round(gasto_anual * descuento_total / 100, 2)
gasto_con_descuento = round(gasto_anual - ahorro_anual, 2)

# Resultado
print(f"\n--- Ficha de {nombre} ---")
print(f"Gasto anual:         {gasto_anual} €")
print(f"Nivel:               {nivel}")
print(f"Descuento base:      {descuento}%")

if es_socio:
    print(f"Descuento socio:     +{descuento_extra}%")

print(f"Descuento total:     {descuento_total}%")
print(f"Ahorro:              {ahorro_anual} €")
print(f"Pagaría:             {gasto_con_descuento} €")

# Mensaje personalizado según nivel
if nivel == "Platinum":
    print("\n⭐ Cliente Platinum — acceso a eventos exclusivos")
elif nivel == "Gold":
    print("\n🥇 Cliente Gold — envío gratuito en todos los pedidos")
elif nivel == "Silver":
    print("\n🥈 Cliente Silver — acceso anticipado a rebajas")
else:
    print("\nℹ️ Gasta más de 500€ al año para subir a nivel Silver")
```

Resultado:
```
=== SISTEMA DE FIDELIZACIÓN ===

Nombre del cliente: Sergio
Gasto anual (€): 2500
¿Es socio? (s/n): s

--- Ficha de Sergio ---
Gasto anual:         2500.0 €
Nivel:               Gold
Descuento base:      15%
Descuento socio:     +5%
Descuento total:     20%
Ahorro:              500.0 €
Pagaría:             2000.0 €

🥇 Cliente Gold — envío gratuito en todos los pedidos

Aquí hay un patrón muy útil que verás mucho en FP1, usar if/elif/else para asignar valores a variables (nivel, descuento) y luego usar esas variables en el resto del programa. Es mucho más limpio que repetir condiciones.

Condicionales en Python práctica — Programa 3: Clasificador de notas con menú

El más completo de los tres. Crea el archivo clasificador_notas.py. Combina un menú de selección con condicionales para ofrecer diferentes análisis:

# Clasificador de notas con menú
print("=== CLASIFICADOR DE NOTAS ===")
print("1. Clasificar una nota")
print("2. Comparar dos notas")
print("3. Calcular nota mínima necesaria")

opcion = int(input("\nElige una opción (1-3): "))

if opcion == 1:
    nota = float(input("\nIntroduce la nota (0-10): "))

    if nota < 0 or nota > 10:
        print("Error: la nota debe estar entre 0 y 10")
    elif nota >= 9:
        calificacion = "Sobresaliente"
        emoji = "🏆"
    elif nota >= 7:
        calificacion = "Notable"
        emoji = "⭐"
    elif nota >= 5:
        calificacion = "Aprobado"
        emoji = "✓"
    elif nota >= 3:
        calificacion = "Suspenso"
        emoji = "✗"
    else:
        calificacion = "Muy deficiente"
        emoji = "❌"

    if nota >= 0 and nota <= 10:
        print(f"\n{emoji} Nota {nota} — {calificacion}")
        if nota < 5:
            print(f"Necesitas {round(5 - nota, 1)} puntos más para aprobar")
        else:
            print(f"Tienes {round(nota - 5, 1)} puntos sobre el aprobado")

elif opcion == 2:
    nota1 = float(input("\nNota 1: "))
    nota2 = float(input("Nota 2: "))

    if nota1 > nota2:
        print(f"\nLa nota 1 ({nota1}) es mayor por {round(nota1 - nota2, 1)} puntos")
    elif nota2 > nota1:
        print(f"\nLa nota 2 ({nota2}) es mayor por {round(nota2 - nota1, 1)} puntos")
    else:
        print(f"\nAmbas notas son iguales ({nota1})")

    media = round((nota1 + nota2) / 2, 2)
    print(f"Media: {media} — {'Aprobado' if media >= 5 else 'Suspenso'}")

elif opcion == 3:
    notas_actuales = int(input("\n¿Cuántas notas tienes ya?: "))
    suma = 0

    for i in range(notas_actuales):
        nota = float(input(f"Nota {i+1}: "))
        suma += nota

    total_asignaturas = int(input("¿Cuántas asignaturas en total?: "))
    nota_minima = round((5 * total_asignaturas - suma) / (total_asignaturas - notas_actuales), 2)

    if nota_minima <= 0:
        print("\n✓ Ya tienes el aprobado asegurado")
    elif nota_minima <= 10:
        print(f"\nNecesitas sacar al menos {nota_minima} en las asignaturas restantes")
    else:
        print("\n✗ Matemáticamente ya no es posible aprobar con media 5")

else:
    print("Opción no válida — elige entre 1 y 3")
```

Resultado con opción 1:
```
=== CLASIFICADOR DE NOTAS ===
1. Clasificar una nota
2. Comparar dos notas
3. Calcular nota mínima necesaria

Elige una opción (1-3): 1

Introduce la nota (0-10): 6.5

✓ Nota 6.5 — Aprobado
Tienes 1.5 puntos sobre el aprobado

Este programa usa ya un bucle for en la opción 3, que es el siguiente tema que veremos. No te preocupes si no lo entiendes todavía, lo importante ahora son los condicionales.

El patrón que más usarás en FP1

De todo lo que hemos visto, este es el patrón que aparece más en los ejercicios de clase:

# Patrón: clasificar con if/elif/else y guardar en variable
valor = float(input("Introduce un valor: "))

if valor >= umbral_alto:
    categoria = "Alta"
elif valor >= umbral_medio:
    categoria = "Media"
else:
    categoria = "Baja"

# Usar la variable después
print(f"Categoría: {categoria}")

Apréndetelo bien, lo verás en notas, temperaturas, edades, precios y muchísimas situaciones más.

Resumen y siguiente paso

En este artículo practicaste los condicionales en Python con tres programas reales. Usaste if/elif/else para clasificar, validar y comparar datos, el operador ternario para resultados en una línea, not in para comprobar texto, y el patrón de asignar valores con condicionales.

En el siguiente artículo de esta serie encontrarás ejercicios propuestos con solución, incluyendo el clásico juego de adivinar el número.

Publicaciones Similares

2 comentarios

Deja una respuesta

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