Resumen - Calculadora segura
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 47 de 56.
Construye una pequeña calculadora que sobreviva a entradas incorrectas, combinando raise, múltiples cláusulas rescue y ensure.
Desafío
IntermedioDefine un método calc(a, op, b) que:
- Lance un
ArgumentErrorcon el mensaje"unknown operator"siopno es uno de los siguientes:+,-,*,/ - Realice la operación en caso contrario (usa aritmética de enteros para
/)
Luego, lee tres líneas de la entrada, a, op, b: y llama a calc dentro de un bloque begin / rescue / ensure:
- Si tiene éxito, imprime
<a> <op> <b> = <result> - Ante un
ArgumentError, imprimeBad operator - Ante un
ZeroDivisionError, imprimeCannot divide by zero - En el
ensure, imprime siempre--- end ---
Usa Integer(...) para analizar a y b, dentro del mismo bloque begin, de modo que una entrada que no sea un entero también resulte en Bad operator (ArgumentError cubre ambos casos).
Para la entrada 6 / * / 7, la salida es:
6 * 7 = 42
--- end ---Para la entrada 10 / / / 0:
Cannot divide by zero
--- end ---Pruébalo tú mismo
# TODO: definir calc(a, op, b), lanza ArgumentError en caso de op desconocida
raw_a = gets.chomp
op = gets.chomp
raw_b = gets.chomp
# TODO: begin/rescue/ensure como se describió
Todas las lecciones de Lógica y flujo
1Strings en profundidad
Visión general de los métodos de StringInterpolación de StringsIterar sobre StringsSplit y JoinRepaso - String Weaver4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end vs llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasResumen - Iterador personalizado7Hashes Parte 2
Hash.new con valores por defectoIteración de HashesHashes anidadosFusión y transformaciónResumen - Contador de frecuencia10Proyecto - Registros de Estudiantes
Descripción general del proyectoAgregar estudiante5Potencia de Enumerable
Select y RejectEncadenando MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byResumen - Data Pipeline3Arreglos 2D
Conceptos básicos de arreglos 2DAcceso a elementos 2DIteración sobre arreglos 2DPatrones comunes en 2DResumen - Operaciones con matrices6Proyecto - Gestor de biblioteca
Descripción general del proyectoAñadir libro9Manejo de errores
¿Qué es una excepción?begin / rescueMúltiples cláusulas rescueensure y raiseResumen - Calculadora segura