Ôn tập: Máy tính an toàn
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 56 trên 64.
Thử thách
KhóHoàn thành evaluate(expr). Một biểu thức có dạng <number> <operator> <number>, với khoảng trắng quanh toán tử, chẳng hạn 8 / 2. Dùng stop() để báo lỗi cho từng vấn đề, theo thứ tự sau:
expected: number operator numberkhi không có đúng ba phần'<part>' is not a numbercho phần số đầu tiên không thể chuyển đổi, chẳng hạn'x' is not a numberunknown operator <op>khi toán tử không phải là+,-,*hoặc/division by zero
Nếu không có vấn đề nào, hãy trả về kết quả đã làm tròn đến bốn chữ số thập phân bằng round(value, 4).
Sau đó hoàn thành run_all(exprs): đánh giá từng biểu thức bên trong tryCatch() và trả về một dòng cho mỗi biểu thức, 8 / 2 = 4 hoặc 5 / 0 -> error: division by zero.
Code được cung cấp chuyển từng dòng đầu vào cho run_all() và in ra từng dòng được trả về.
Tự làm thử
evaluate <- function(expr) {
# Viết code của bạn ở đây
0
}
run_all <- function(exprs) {
# Viết code của bạn ở đây
character(0)
}
# Đoạn code đầu vào/đầu ra đã có sẵn: giữ nguyên
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(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ểm2Tra cứu khóa-giá trị
Tra cứu vector theo tênKiểm tra khóaThêm và xóa khóaLặp qua các tênÔn tập: Bàn giao dịch cổ phiếu11Xử lý lỗi
Phát sinh lỗi với stop()Bắt lỗi với tryCatch()Cảnh báo và finallyKiểm tra đầu vàoÔn tập: Máy tính an toànTự luyện tập: Trình biên dịch R online