11# Reto 1: Procesador interactivo de comandos
22# Enunciado: Crea un programa que procese comandos hasta que el usuario escriba "salir".
3+ #
4+ # **Requisitos**:
5+ # - Usa operador morsa en el bucle `while`
6+ # - Comandos: `sumar x y`, `restar x y`, `multiplicar x y`, `dividir x y`
7+ # - Valida que los números sean correctos
8+ # - Muestra error si el comando no es válido
9+ #
10+ # **Ejemplo de uso**:
11+ # ```
12+ # Comando: sumar 5 3
13+ # ✅ 5 + 3 = 8
14+ #
15+ # Comando: dividir 10 0
16+ # ❌ No se puede dividir por cero
17+ #
18+ # Comando: hola
19+ # ❌ Comando no válido
20+ #
21+ # Comando: salir
22+ # ¡Hasta pronto!
23+ # ```
324
4-
25+ # TODO 1: Función que imprime las instrucciones del reto 1
26+ def mostrar_instrucciones ():
27+ print ("\n --- Instrucciones de uso ---" )
28+ print ("Escribe uno de estos comandos para interactuar con el programa:" )
29+ print ("1. sumar x y --> Suma los valores x y" )
30+ print ("2. restar x y --> Resta los valores x y" )
31+ print ("3. multiplicar x y --> Multiplica los valores x y" )
32+ print ("4. dividir x y --> Divide los valores x y (cuidado con agregar '0' en y)" )
33+ print ("5. salir --> Salimos del programa" )
34+ print ("'x' es el primer número a introducir en el programa; 'y' es el segundo número a introducir" )
35+ print ("EJEMPLO: " )
36+ print ("Comando: sumar 5 3" )
37+ print ("✅ 5 + 3 = 8" )
38+ print ("\n Ahora bien, ¿empezamos?" )
39+
40+ # TODO 2: Función de la lógica del programa reto1
41+ def reto1 ():
42+ # Llamamos la función de las intrucciones
43+ mostrar_instrucciones ()
44+
45+ # Bucle principal while: ejecuta comandos hasta escribir la palabra 'salir'
46+ # El operador := (operador morsa) asigna valor a 'comando' y lo evalúa en la misma línea
47+ while (comando := input ("\n Comando: " ).strip ().lower ()) != "salir" :
48+
49+ # Separar el comando en partes (en este caso 3)
50+ partes = comando .split ()
51+
52+ # Comprobar que 'partes' tenga dividida 3 partes (operador, x, y)
53+ if len (partes ) != 3 :
54+ print ("❌ Comando no válido." )
55+ continue # Volver al inicio del bucle
56+
57+ # Desempaquetamos las partes del comando
58+ operador , str_x , str_y = partes
59+
60+ # Intentar que x y sean números flotantes
61+ try :
62+ x , y = float (str_x ), float (str_y )
63+ except ValueError :
64+ print ("❌ Números no válidos." )
65+ continue
66+
67+ # Ejecutar la operacion solicitada
68+ if operador == "sumar" :
69+ print (f"✅ { x } + { y } = { x + y } " )
70+ continue
71+ elif operador == "restar" :
72+ print (f"✅ { x } + { y } = { x - y } " )
73+ continue
74+ elif operador == "multiplicar" :
75+ print (f"✅ { x } + { y } = { x * y } " )
76+ continue
77+ elif operador == "dividir" :
78+ if y != 0 :
79+ print (f"✅ { x } + { y } = { x / y } " )
80+ continue
81+ else :
82+ print ("❌ No se puede dividir por 0." )
83+ else :
84+ print ("❌ Comando no válido." )
85+
86+ # Una vez introducido la palabra 'salir', finaliza el programa
87+ print ("Hasta pronto 👋" )
88+
89+ # TODO 3: Crear función principal
90+ def main ():
91+ # Imprimir título del reto 1
92+ print ("--- 🛠️ Procesador interactivo de comandos 🛠️ ---" )
93+ # Llamar función reto1
94+ reto1 ()
95+
96+ # TODO: Punto de entrada del programa
97+ if __name__ == "__main__" :
98+ main ()
0 commit comments