记录成绩
本课属于 Coddy R 学习旅程的“逻辑与流程”单元。第 23 课,共 64 课。
挑战
简单将 GRADE 命令添加到 gradebook() 中。之前各步骤中的所有命令都必须继续按原样工作。
GRADE <name> <score>:如果未存储该学生,则回复no student <name>。否则,将分数追加到该学生的成绩中,并回复recorded <score> for <name>。
分数是数字,例如 90 或 87.5;回复中的数字格式要与 R 打印数字的格式一致。
提供的代码会将每一行输入作为一条命令传递给 gradebook(),并将每条返回的回复单独打印在一行上。名字是一个全小写单词,输入中只包含目前为止介绍过的命令。
亲手试试
gradebook <- function(commands) {
grades <- list()
replies <- c()
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
if (parts[1] == "ADD") {
if (name %in% names(grades)) {
replies <- c(replies, paste(name, "already exists"))
} else {
grades[[name]] <- numeric(0)
replies <- c(replies, paste("added", name))
}
}
}
replies
}
# 提供的输入和输出代码:保持原样。
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
逻辑与流程中的所有课
自己练习: R 在线编译器