Đọc đầu vào bằng readline()
Thuộc phần Kiến thức nền tảng trong hành trình R của Coddy. Bài học 29 trên 78.
Đến đây, bạn đã học cách hiển thị đầu ra. Bây giờ là lúc làm cho chương trình tương tác bằng cách đọc đầu vào từ người dùng. Hàm (function) readline() cho phép bạn ghi nhận nội dung người dùng nhập.
name <- readline()
cat("Hello,", name, "\n")Khi đoạn code này chạy trong một phiên R tương tác (bảng điều khiển R hoặc RStudio), R chờ người dùng nhập nội dung rồi nhấn Enter. Nội dung họ nhập sẽ được lưu vào biến name. Nếu người dùng nhập "Alice", đầu ra sẽ là: Hello, Alice
Trên nền tảng này, code của bạn chạy dưới dạng tập lệnh với Rscript, vì vậy readline() không chờ mà trả về ngay một chuỗi rỗng "". Đó là lý do code khởi đầu của thử thách trong bài học này đọc đầu vào bằng readLines().
Một điều quan trọng cần biết: readline() luôn trả về một chuỗi (string), ngay cả khi người dùng nhập một số. Nếu ai đó nhập "25", giá trị đó được lưu dưới dạng văn bản "25", không phải số 25. Bạn sẽ học cách chuyển đổi giữa các kiểu dữ liệu ở bài học tiếp theo.
Bạn có thể đọc nhiều đầu vào bằng cách dùng readline() nhiều lần:
first <- readline()
second <- readline()
cat("First:", first, "\n")
cat("Second:", second, "\n")Trong một phiên tương tác, mỗi lần gọi readline() sẽ chờ người dùng nhập một dòng riêng.
Khi kết hợp văn bản với các biến bằng cat(), mỗi mục được ngăn cách bằng dấu phẩy sẽ có một dấu cách ở giữa. Đôi khi bạn cần nối văn bản mà không có dấu cách, chẳng hạn như khi gắn dấu câu trực tiếp vào một từ. Khi đó, paste0() rất hữu ích. Hàm này nối các chuỗi mà không có dấu phân cách giữa chúng:
city <- readline()
cat("Welcome to", paste0(city, "!"), "\n")Ở đây, paste0(city, "!") nối giá trị của city với "!" mà không có khoảng trắng, nên nếu người dùng nhập "Paris", đầu ra là: Welcome to Paris!
Thử thách
DễĐọc hai dòng đầu vào và hiển thị lời chào cá nhân hóa.
Bạn sẽ nhận được hai đầu vào (input):
- Tên
- Tên thành phố
Đoạn code khởi đầu đã đọc cả hai đầu vào vào name và city bằng readLines(), vì readline() chỉ hoạt động trong phiên tương tác và không nhận được dữ liệu nào ở đây. Hiển thị thông báo theo định dạng sau:
Welcome, [name] from [city]!Dùng cat() để tạo đầu ra (output). Nhớ thêm dấu chấm than ở cuối và ký tự xuống dòng \n.
Ví dụ: nếu đầu vào là Emma và Paris, đầu ra sẽ là:
Welcome, Emma from Paris!Tự làm thử
# Đọc đầu vào (input)
con <- file("stdin", "r")
name <- suppressWarnings(readLines(con, n = 1))
city <- suppressWarnings(readLines(con, n = 1))
# TODO: Viết code bên dưới để hiển thị lời chào
# Dùng cat() để in ra: Welcome, [name] from [city]!
# Đừng quên ký tự (character) xuống dòng \n ở cuốiBài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
4Toán tử phần 2
Toán tử logic (AND, OR)Toán tử logic phần 2 (NOT)Ôn tập: logic đơn giảnLogic vector hóa phần 1Logic vector hóa phần 22Biến và kiểu dữ liệu
Kiểu dữ liệu sốKiểu dữ liệu số nguyênKiểu dữ liệu ký tựKiểu dữ liệu logicKiểm tra kiểu dữ liệuQuy tắc đặt tênGiá trị thiếu: NATóm tắt: tạo biến8Vòng lặp
Vòng lặp forVòng lặp whileBreakNext (continue)Ôn tập: giai thừaTạo dãy (seq, :)Vòng lặp lồng nhauÔn tập: đầu vào động3Toán tử phần 1
Toán tử số họcPhép chia lấy phần nguyên và phép moduloToán tử gánÔn tập: phép tính đơn giảnToán tử so sánh6Nhập xuất cơ bản
In đầu raDùng cat để in đầu raĐầu ra với biếnĐọc đầu vào bằng readline()Cơ bản về chuyển đổi kiểuÔn tập: máy tính tuổiÔn tập: đúng hay sai9Hàm
Khai báo hàmĐối số hàmGiá trị trả vềÔn tập: hàm SigmaÔn tập: hàm xác thựcGiá trị tham số mặc địnhTự luyện tập: Trình biên dịch R online