CODEZEROINTERACTIVE

Chapter 9 / 15

Parte 25 — Reto del capítulo

Condiciones con if, else y elif, validaciones, decisiones de menú y reglas para MiniFinance.

Lesson 2653%

26 / 26 lessons in this chapter

Parte 25 — Reto del capítulo

1 / 1 in this part

Current chapter

Chapter 9 — Condiciones: enseñar al programa a tomar decisiones

Self-paced

Parte 25 — Reto del capítulo

MiniFinance con decisiones

Crea una versión que solicite:

text terminal
Nombre del usuario
Nombre de la cuenta
Moneda
Estado de la cuenta
Saldo inicial
Presupuesto mensual
Meta de ahorro
Una opción de menú

El menú debe incluir:

text terminal
1. Ver saldo
2. Registrar ingreso
3. Registrar gasto
4. Consultar presupuesto
5. Consultar meta
6. Salir

La aplicación debe:

  • Utilizar un nombre predeterminado si el campo está vacío.
  • Utilizar Cuenta principal si el nombre de la cuenta está vacío.
  • Aceptar CRC, USD y JPY.
  • Utilizar CRC si la moneda no es válida.
  • Convertir una respuesta de sí o no a bool.
  • Rechazar un saldo inicial negativo.
  • Rechazar un presupuesto negativo.
  • Rechazar una meta negativa.
  • Rechazar ingresos menores o iguales a cero.
  • Rechazar gastos menores o iguales a cero.
  • Rechazar gastos mayores que el saldo.
  • Rechazar movimientos si la cuenta está inactiva.
  • Evitar divisiones entre cero.
  • Mostrar el estado del presupuesto.
  • Mostrar el progreso de la meta.
  • Mostrar una opción inválida cuando corresponda.

Reglas del presupuesto

Utiliza:

text terminal
100 % o más:
    agotado o superado

80 % o más:
    casi agotado

50 % o más:
    uso moderado

Menos de 50 %:
    bajo control

Reglas de la meta

Utiliza:

text terminal
100 % o más:
    alcanzada

75 % o más:
    muy cerca

50 % o más:
    más de la mitad

Mayor que 0 %:
    en progreso

0 %:
    sin comenzar

Requisitos técnicos

Debes utilizar:

  • Al menos un if.
  • Al menos un elif.
  • Al menos un else.
  • Al menos una condición con and.
  • Al menos una condición con or.
  • Al menos una condición con not.
  • Al menos una condición anidada.
  • Una comprobación con is None o is not None.
  • Una validación antes de dividir.
  • Una variable booleana.
  • Una opción de menú como str.
  • Comentarios para dividir secciones.
  • Una pausa final.

Preguntas frecuentes

¿Una condición siempre necesita else?

No.

Esto es válido:

python terminal
if saldo < 0:
    print("Advertencia.")

Si la condición es falsa, el programa continúa.


¿Puedo utilizar varios elif?

Sí.

python terminal
if opcion == "1":
    ...
elif opcion == "2":
    ...
elif opcion == "3":
    ...
elif opcion == "4":
    ...
else:
    ...

¿Es obligatorio utilizar else después de elif?

No.

Puedes terminar con un elif.

Sin embargo, else suele ser útil para manejar cualquier caso no previsto.


¿Cuántas instrucciones pueden existir dentro de un bloque?

Tantas como necesites, siempre que tengan la indentación correcta.


¿Puedo colocar un if dentro de otro?

Sí.

Eso se conoce como una condición anidada.


¿Debo comparar siempre con True?

No.

En lugar de:

python terminal
if cuenta_activa == True:

utiliza:

python terminal
if cuenta_activa:

¿Cómo compruebo False?

python terminal
if not cuenta_activa:

¿Qué diferencia existe entre varios if y elif?

Varios if pueden ejecutar varios bloques.

Una cadena if, elif, else ejecuta solamente una rama.


¿Por qué importa el orden de los elif?

Python selecciona la primera condición verdadera.

Una condición amplia puede impedir que las condiciones más específicas sean alcanzadas.


¿Puedo validar texto con if?

Sí.

python terminal
if not nombre:
    print("Nombre vacío.")

¿Puedo evitar un ValueError con if?

No siempre.

Si escribes:

python terminal
monto = int(input("Monto: "))

la conversión ocurre antes del if.

Necesitaremos try y except para controlar texto no numérico.


¿Cómo evito dividir entre cero?

Comprueba primero el divisor:

python terminal
if cantidad > 0:
    promedio = total / cantidad

¿Por qué utilizar is None?

Porque es la forma recomendada de comprobar específicamente la ausencia de valor.


¿Qué es pass?

Es una instrucción que no realiza ninguna acción.

Permite dejar temporalmente un bloque vacío:

python terminal
if condicion:
    pass

¿Por qué el menú solo funciona una vez?

Porque el programa se ejecuta de arriba hacia abajo y no contiene una instrucción para repetir el menú.

Eso se resolverá con bucles.


Errores comunes del capítulo

Antes de continuar, comprueba que no estés:

  • Olvidando los dos puntos.
  • Olvidando la indentación.
  • Mezclando espacios y tabulaciones.
  • Utilizando = en lugar de ==.
  • Escribiendo If, Else o Else If.
  • Colocando elif después de else.
  • Utilizando más de un else.
  • Comparando una opción textual con un número.
  • Escribiendo incorrectamente una condición con or.
  • Colocando primero una condición demasiado amplia.
  • Modificando saldos antes de validar.
  • Suponiendo que if evita errores de conversión.
  • Dividiendo antes de comprobar el divisor.
  • Comparando None de manera poco clara.
  • Creando demasiados niveles de condiciones anidadas.
  • Confundiendo varios if con una cadena elif.
  • Creyendo que "False" es un booleano falso.
  • Utilizando un else genérico cuando necesitas explicar el error.
  • Olvidando que solo se ejecuta la primera rama verdadera.

Lista de comprobación

Antes de continuar, deberías poder marcar:

text terminal
[ ] Sé qué es una condición.
[ ] Sé utilizar if.
[ ] Sé utilizar else.
[ ] Sé utilizar elif.
[ ] Entiendo la indentación.
[ ] Sé que los dos puntos son obligatorios.
[ ] Puedo comparar valores.
[ ] Puedo utilizar una variable booleana en un if.
[ ] Sé utilizar not.
[ ] Puedo combinar condiciones con and.
[ ] Puedo combinar condiciones con or.
[ ] Entiendo la diferencia entre varios if y elif.
[ ] Sé que el orden de las condiciones importa.
[ ] Puedo detectar un texto vacío.
[ ] Puedo asignar un valor predeterminado.
[ ] Puedo validar números positivos.
[ ] Puedo validar porcentajes.
[ ] Puedo evitar una división entre cero.
[ ] Sé comprobar None con is None.
[ ] Puedo validar un gasto antes de modificar el saldo.
[ ] Puedo registrar un ingreso válido.
[ ] Puedo procesar una opción de menú.
[ ] Puedo crear una condición anidada.
[ ] Puedo reconocer un IndentationError.
[ ] Entiendo que if no evita por sí solo un ValueError.
[ ] MiniFinance puede tomar decisiones.

Si alguna respuesta es negativa, vuelve a practicar la sección correspondiente.


Qué aprendiste

En este capítulo aprendiste:

  • Qué es una condición.
  • Cómo utilizar if.
  • Cómo utilizar else.
  • Cómo utilizar elif.
  • Cómo funciona la indentación.
  • Por qué Python utiliza bloques indentados.
  • Cómo ejecutar instrucciones según comparaciones.
  • Cómo utilizar variables booleanas.
  • Cómo utilizar and, or y not.
  • Cómo distinguir varios if de una cadena elif.
  • Por qué el orden de las condiciones importa.
  • Cómo detectar textos vacíos.
  • Cómo crear valores predeterminados.
  • Cómo validar ingresos, gastos, porcentajes y metas.
  • Cómo evitar divisiones entre cero.
  • Cómo comprobar None.
  • Cómo interpretar respuestas de sí y no.
  • Cómo procesar opciones de menú.
  • Cómo validar una operación antes de modificar los datos.
  • Cómo mostrar errores específicos.
  • Cómo utilizar condiciones anidadas.
  • Cómo clasificar presupuestos y metas.
  • Qué es un IndentationError.
  • Por qué una condición no puede evitar todos los errores de entrada.

MiniFinance ahora puede analizar información y elegir qué instrucciones ejecutar.

Ya puede rechazar gastos, comprobar saldos, interpretar opciones y mostrar advertencias.

Sin embargo, su menú todavía tiene memoria de pez: ejecuta una acción y se despide como si tuviera un autobús que alcanzar.

Eso cambiará en el siguiente capítulo.