If else lồng nhau
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 25 trên 78.
Đôi khi hai lựa chọn là chưa đủ. Nếu bạn cần kiểm tra nhiều điều kiện và xử lý từng điều kiện theo cách khác nhau thì sao? Bạn có thể đặt câu lệnh if-else bên trong một khối if hoặc else khác để tạo ra các nhánh quyết định phức tạp hơn.
score <- 85
if (score >= 90) {
print("Grade: A")
} else {
if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}
}Trước tiên, R kiểm tra xem điểm số có từ 90 trở lên không. Vì 85 không thỏa mãn điều kiện đó nên chương trình chuyển sang khối lệnh else.
Bên trong, một if khác kiểm tra xem điểm số có ít nhất là 80 hay không. Vì 85 vượt qua kiểm tra này nên chương trình in ra "Grade: B".
R có cách viết gọn gàng hơn bằng else if:
score <- 85
if (score >= 90) {
print("Grade: A")
} else if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}Cả hai cách đều hoạt động như nhau, nhưng else if giúp code ít lồng nhau hơn và dễ đọc hơn. Bạn có thể nối bao nhiêu khối else if tùy ý, và R chỉ chạy khối đầu tiên có điều kiện đúng.
Thử thách
DễTạo hệ thống định giá vé bằng các câu lệnh if-else hoặc else if lồng nhau để xác định giá vé dựa trên độ tuổi.
Bạn được cung cấp biến sau:
age <- 25Viết một loạt điều kiện để xác định và in ra giá vé dựa trên các quy tắc sau:
- Nếu tuổi dưới 5, in ra
"Free" - Nếu tuổi từ 5 đến 12 (bao gồm cả hai mốc), in ra
"$5" - Nếu tuổi từ 13 đến 17 (bao gồm cả hai mốc), in ra
"$8" - Nếu tuổi từ 18 đến 64 (bao gồm cả hai mốc), in ra
"$12" - Nếu tuổi từ 65 trở lên, in ra
"$7"
Dùng hàm print() để in ra kết quả.
Tự làm thử
# Biến (variable) đã được cung cấp
age <- 25
# TODO: Viết code của bạn bên dưới
# Dùng các câu lệnh (statement) if-else lồng nhau hoặc else if để xác định giá vé
# dựa trên quy tắc về độ tuổi đã choBà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