回顾:安全计算器
本课属于 Coddy R 学习旅程的“逻辑与流程”单元。第 56 课,共 64 课。
挑战
困难完成 evaluate(expr)。表达式的格式为 <number> <operator> <number>,运算符两侧要有空格,例如 8 / 2。遇到以下问题时,按此顺序使用 stop() 抛出错误:
- 部分数量不正好为 3 时,抛出
expected: number operator number - 第一个无法转换为数字的部分,例如
'x' is not a number,抛出'<part>' is not a number - 运算符不是
+、-、*或/时,抛出unknown operator <op> - 除数为 0 时,抛出
division by zero
否则,返回结果,并使用 round(value, 4) 将结果四舍五入到小数点后 4 位。
然后完成 run_all(exprs):在 tryCatch() 中计算每个表达式,并为每个表达式返回一行,例如 8 / 2 = 4 或 5 / 0 -> error: division by zero。
提供的代码会将每一行输入传给 run_all(),并打印返回的每一行。
亲手试试
evaluate <- function(expr) {
# 在这里编写你的代码
0
}
run_all <- function(exprs) {
# 在这里编写你的代码
character(0)
}
# 提供的输入和输出代码:保持原样
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")
逻辑与流程中的所有课
自己练习: R 在线编译器