回顾:安全计算器
本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 47 课,共 56 课。
构建一个小型计算器,使它能够应对无效输入,并结合使用 raise、多个 rescue 子句和 ensure。
挑战
中等定义一个方法 calc(a, op, b),要求:
- 如果
op不是+、-、*、/之一,则引发ArgumentError,并显示消息"unknown operator" - 否则执行相应的运算(
/使用整数运算)
然后从输入中读取三行,分别是 a、op、b,并在 begin / rescue / ensure 中调用 calc:
- 成功时,输出
<a> <op> <b> = <result> - 遇到
ArgumentError时,输出Bad operator - 遇到
ZeroDivisionError时,输出Cannot divide by zero - 在
ensure中始终输出--- end ---
在同一个 begin 块中,使用 Integer(...) 解析 a 和 b,这样非整数输入也会输出 Bad operator(ArgumentError 会涵盖这两种情况)。
输入 6 / * / 7 时,输出为:
6 * 7 = 42
--- end ---输入 10 / / / 0 时:
Cannot divide by zero
--- end ---亲手试试
# TODO:定义 calc(a, op, b),遇到未知的 op 时抛出 ArgumentError
raw_a = gets.chomp
op = gets.chomp
raw_b = gets.chomp
# TODO:按要求使用 begin/rescue/ensure
逻辑与流程中的所有课
自己练习: Ruby 在线编译器