Ghi điểm
Thuộc phần Logic và luồng điều khiển trong hành trình R của Coddy. Bài học 23 trên 64.
Thử thách
DễThêm lệnh GRADE vào gradebook(). Giữ cho mọi lệnh từ các bước trước vẫn hoạt động chính xác như trước.
GRADE <name> <score>: nếu chưa lưu học sinh đó, hãy trả lờino student <name>. Nếu có, hãy thêm điểm vào danh sách điểm của học sinh và trả lờirecorded <score> for <name>.
Điểm là các số như 90 hoặc 87.5; hãy ghi chúng trong câu trả lời theo cách R in ra số.
Code được cung cấp chuyển từng dòng đầu vào cho gradebook() dưới dạng một lệnh và in mỗi câu trả lời được trả về trên một dòng riêng. Tên là một từ viết thường, và đầu vào chỉ chứa các lệnh đã mô tả đến thời điểm này.
Tự làm thử
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
}
# Đoạn code đầu vào/đầu ra đã cung cấp: giữ nguyên
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
Tất cả bài học trong Logic và luồng điều khiển
1Chuỗi chuyên sâu
Chuỗi con với substr()Định dạng với sprintf()Tách và nối chuỗiTìm kiếm trong chuỗiThay thế văn bảnÔn tập: Tạo tên người dùng10Luồng điều khiển nâng cao
Hàm switch()ifelse() dạng vector hóarepeat và breakHàm đệ quyÔn tập: phân loại điểmTự luyện tập: Trình biên dịch R online