Menu
CoddyTech

回顾:安全计算器

本课属于 Coddy R 学习旅程的“逻辑与流程”单元。第 56 课,共 64 课。

challenge icon

挑战

困难

完成 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 在线编译器