Ing. Bernardo Prado · DSM3 · UTH 2026-2
Apellido_Paterno_Apellido_Materno_Grupo_U1_OP2, ejemplo: Hernandez_Gomez_DSM3_1_U1_OP2
.py).[Número]_Apellido_Paterno_Apellido_Materno_TemadelProblema_ExU1op2.py
01_PradoDiaz_CuentaBancaria_ExU1op2.py
02_PradoDiaz_HotelHabitacion_ExU1op2.py (continuando la secuencia consecutiva hasta el sexto archivo).
Seis ejercicios de aplicación directa en contextos de negocios reales: banco, hotel, restaurante, gasolinera, farmacia y cine. Cada uno usa if / elif / else y atributos bool, con escenario, diagramas y salida esperada.
Un banco necesita clasificar las cuentas de sus clientes según el saldo disponible y controlar si están activas. La clase CuentaBancaria usará un atributo booleano para indicar si la cuenta está operativa, clasificará el tipo de cuenta con if/elif/else según el saldo, y permitirá realizar retiros solo cuando haya fondos suficientes.
titular y el saldo iniciales. Crea el booleano activa = True para indicar que la cuenta comienza operativa. Define el atributo de clase SALDO_MINIMO = 500 como política del banco.if/elif/else para clasificar: si saldo >= 50000 retorna "Platino", si >= 10000 retorna "Oro", si >= 1000 retorna "Básica", de lo contrario retorna "Sin fondos".True solo cuando el saldo es mayor o igual al SALDO_MINIMO y la cuenta está activa. Combina ambas condiciones con and.True. En cualquier otro caso retorna False sin modificar el saldo.✓ Con fondos o ✗ Sin fondos según el resultado de tiene_fondos(), junto con el nombre del titular, tipo y saldo formateado.Ana Torres | Cuenta: Platino | Saldo: $75000.00 | ✓ Con fondos Pedro Luna | Cuenta: Básica | Saldo: $2000.00 | ✓ Con fondos María Sol | Cuenta: Sin fondos | Saldo: $300.00 | ✗ Sin fondos Roberto Díaz | Cuenta: Oro | Saldo: $15000.00 | ✓ Con fondos
Un hotel necesita gestionar sus habitaciones, conocer su categoría según el tipo y controlar su disponibilidad. La clase Habitacion usará un booleano para indicar si está libre, clasificará su categoría con if/elif/else según el tipo y calculará el costo total aplicando descuentos por estadía larga.
numero, tipo y precio_noche. Crea el booleano disponible = True para indicar que la habitación empieza libre.if/elif/else para clasificar el tipo: "Suite" es "Lujo", "Doble" es "Estándar", cualquier otro tipo es "Económica".disponible a False y retorna True. Si ya estaba ocupada, retorna False sin cambiar nada.noches >= 7 aplica 15% de descuento, si >= 3 aplica 10%, de lo contrario aplica precio completo. Retorna el resultado con round(..., 2).✓ Disponible o ✗ Ocupada y arma la línea con número, tipo, categoría y precio por noche.Hab. 301 | Suite → Lujo | $2500.00/noche | ✓ Disponible Hab. 101 | Doble → Estándar | $800.00/noche | ✗ Ocupada Hab. 205 | Sencilla → Económica | $400.00/noche | ✓ Disponible Costo 10 noches Hab. 301: $21250.00 (desc. 15%)
Un restaurante necesita gestionar los pedidos de sus mesas, calcular la propina según el monto consumido y registrar si la cuenta ya fue pagada. La clase Pedido usará un booleano para el estado de pago, calculará la propina con if/elif/else y mostrará el total con desglose.
mesa, el nombre del platillo y el precio. Crea el booleano pagado = False para indicar que la cuenta empieza pendiente.if/elif/else para fijar el porcentaje: precio >= 500 aplica 15%, >= 200 aplica 12%, de lo contrario aplica 10%. Retorna el valor de la propina como float.pagado a True si la cuenta estaba pendiente. Si ya estaba pagada, no hace ningún cambio para evitar doble cobro.✓ Pagado o ✗ Pendiente. Arma la línea con mesa, platillo, precio, propina y total.Mesa 5 | Filete a la plancha | $650.00 + propina $97.50 = $747.50 | ✗ Pendiente Mesa 2 | Sopa del día | $150.00 + propina $15.00 = $165.00 | ✓ Pagado Mesa 8 | Pasta italiana | $280.00 + propina $33.60 = $313.60 | ✗ Pendiente
Una gasolinera necesita controlar el nivel de combustible de los vehículos que atiende. La clase Vehiculo usará un booleano para saber si el tanque está lleno, determinará el estado del nivel con if/elif/else y alertará cuando el vehículo necesite atención urgente.
placa, el tipo de combustible y el nivel_tanque (0–100). Crea el booleano tanque_lleno comparando si el nivel inicial es igual a 100.if/elif/else para clasificar: >= 75 es "Lleno", >= 50 es "Medio", >= 25 es "Bajo", de lo contrario es "Crítico".True cuando el nivel del tanque es menor a 25, indicando que el vehículo necesita cargarse urgentemente.tanque_lleno comparando si el nuevo nivel es igual a 100.✓ Necesita servicio o ✗ Sin urgencia según necesita_servicio(), junto con placa, combustible, nivel y estado.ABC-123 | Gasolina | Nivel: 80% → Lleno | ✗ Sin urgencia XYZ-789 | Diesel | Nivel: 18% → Crítico | ✓ Necesita servicio DEF-456 | Gasolina | Nivel: 45% → Medio | ✗ Sin urgencia ABC-123 después de cargar 20 L | Nivel: 100% → Lleno
Una farmacia necesita controlar sus medicamentos, verificar si requieren receta médica y aplicar descuentos a clientes con membresía. La clase Medicamento usará booleanos para el requisito de receta y disponibilidad, y aplicará descuentos con if/elif/else según precio y membresía.
nombre, precio y el booleano requiere_receta. Crea el booleano disponible = True para indicar que hay existencia desde el inicio.if/elif/else: si es_miembro y precio >= 200 aplica 20%, si es_miembro sin importar precio aplica 10%, de lo contrario retorna 0. Devuelve el monto de descuento.round(..., 2).True solo cuando hay receta y está disponible. Si no requiere receta, solo verifica que esté disponible.Amoxicilina | $185.00 → $166.50 (miembro) | Receta: ✓ | ✓ Se puede vender Ibuprofeno | $95.00 → $85.50 (miembro) | Receta: ✗ | ✓ Se puede vender Morfina | $320.00 → $256.00 (miembro) | Receta: ✓ | ✗ No se puede vender
Una sala de cine necesita gestionar sus boletos según la función programada. La clase Boleto usará un booleano para saber si ya fue vendido, calculará el precio final con if/elif/else aplicando un factor según la función (Matiné, Normal o Premier) y mostrará la información completa al cajero.
pelicula, el número de sala, el tipo de funcion y el precio_base. Crea el booleano vendido = False para indicar que el boleto aún está disponible.if/elif/else para retornar el factor: "Matiné" retorna 0.7, "Normal" retorna 1.0, "Premier" o cualquier otro caso retorna 1.3.precio_base por el factor obtenido de factor_precio() y retorna el resultado con round(..., 2).vendido a True. Si ya estaba vendido, no realiza ningún cambio para evitar doble emisión.✓ Disponible o ✗ Vendido según el estado, y arma la línea con película, sala, función y precio final.Interestelar | Sala 3 | Matiné | $63.00 | ✓ Disponible Avatar 2 | Sala 1 | Premier | $130.00 | ✓ Disponible Titanic | Sala 2 | Normal | $100.00 | ✗ Vendido