Python - Struct and Case Array
########################################################
#10 Ejemplos utilizando la sentencia case en Python.
#1. Convertir un número en su correspondiente día de la semana:
num = 3
day = {
    1: "Lunes",
    2: "Martes",
    3: "Miércoles",
    4: "Jueves",
    5: "Viernes",
    6: "Sábado",
    7: "Domingo"
}.get(num, "Número inválido")
print(day)
#2. Asignar una letra a una calificación:
grade = 85
letter = {
    range(90, 101): 'A',
    range(80, 90): 'B',
    range(70, 80): 'C',
    range(60, 70): 'D',
    range(0, 60): 'F'
}.get(next((r for r in letter.keys() if grade in r), None), "Calificación inválida")
print(letter)
#3. Realizar diferentes acciones según el valor de una variable:
option = "Guardar"
{
    "Guardar": save_data,
    "Cargar": load_data,
    "Eliminar": delete_data
}.get(option, lambda: print("Opción inválida"))()
#4. Calcular el precio de un producto según su tipo:
product_type = "Ropa"
price = {
    "Comida": lambda x: x * 1.13,
    "Ropa": lambda x: x * 1.10,
    "Electrónica": lambda x: x * 1.20
}.get(product_type, lambda x: x)(100)
print(price)
#5. Asignar un color a un número según su valor:
number = 7
color = {
    1: "Rojo",
    2: "Naranja",
    3: "Amarillo",
    4: "Verde",
    5: "Azul",
    6: "Morado"
}.get(number, "Gris")
print(color)
#6. Realizar diferentes operaciones según el tipo de dato de una variable:
data = ["Hola", 5, True]
result = []
for d in data:
    r = {
        str: lambda x: x.upper(),
        int: lambda x: x * 2,
        bool: lambda x: not x
    }.get(type(d), lambda x: None)(d)
    if r:
        result.append(r)
print(result)
#7. Asignar una categoría a un número según su valor:
number = 25
category = {
    range(0, 10): "Bajo",
    range(10, 20): "Medio",
    range(20, 30): "Alto"
}.get(next((r for r in category.keys() if number in r), None), "Fuera de rango")
print(category)
#8. Calcular el descuento en función del tipo de cliente:
customer_type = "VIP"
discount = {
    "Normal": 0,
    "Premium": 0.10,
    "VIP": 0.20
}.get(customer_type, 0.30)
price = 100
total = price - price * discount
print(total)
#9. Asignar una acción a una tecla presionada:
key_pressed = 'a'
{
    'a': lambda: print('Acción 1'),
    'b': lambda: print('Acción 2'),
    'c': lambda: print('Acción 3')
}.get(key_pressed, lambda: print('Tecla inválida'))()
#10. Calcular el impuesto de un producto según su categoría:
product_category = "Comida"
price = 100
tax = {
    "Comida": 0.05,
    "Ropa": 0.10,
    "Electrónica": 0.20
}.get(product_category, 0)
total = price + price * tax
print(total)