Một nhánh nữa để xét ngưỡng thứ hai
Giả định một trò chơi trao thẻ theo điểm nguyên từ 0 đến 100: dưới 50 nhận thẻ Đồng; từ 50 đến dưới 80 nhận thẻ Bạc; từ 80 đến 100 nhận thẻ Vàng. Đây chỉ là quy tắc của bài toán, không là thang đánh giá học sinh. Với `diem = 50`, điều kiện dưới 50 sai; ở nhánh `else` kiểm tiếp `diem < 80` và chọn Bạc. Mốc 80 chuyển sang Vàng.
```python
diem = 80
if diem < 50:
the = "Đồng"
else:
if diem < 80:
the = "Bạc"
else:
the = "Vàng"
print(the)
```
Mã trên in `Vàng`. Bản mẫu chỉ dùng điểm trong [0; 100]; nếu nhận dữ liệu ngoài phạm vi này cần kiểm trước khi phân loại.
Bài luyện
Theo quy tắc thẻ giả định, `diem = 50` nhận thẻ nào?
Đồng chỉ cho điểm dưới 50.
50 không dưới 50 nhưng dưới 80.
Vàng bắt đầu từ 80.
Nhánh else vẫn xét tiếp ngưỡng 80.
Lời giải
Ở mốc 50, `diem < 50` sai; điều kiện `diem < 80` đúng, nên chọn thẻ `Bạc`.
Bài luyện
Theo mã trong bài, với `diem = 80` kết quả in là gì?
80 không dưới 50.
80 không dưới 80.
Cả hai điều kiện nhỏ hơn đều sai nên vào else cuối.
Mã in tên thẻ, không in điểm.
Lời giải
`80 < 50` sai và `80 < 80` cũng sai. Nhánh `else` cuối gán `the = "Vàng"` rồi in tên thẻ.
Ghép điều kiện năm nhuận đúng nhóm
Theo quy tắc năm nhuận trong SGK, năm `n` nhuận nếu chia hết cho 400, **hoặc** chia hết cho 4 nhưng không chia hết cho 100. Điều kiện Python:
```python
n = 2000
nhuan = (n % 400 == 0) or (n % 4 == 0 and n % 100 != 0)
print(nhuan)
```
Năm 2000 cho `True` vì chia hết cho 400; năm 1900 cho `False` vì chia hết cho 100 nhưng không chia hết cho 400; năm 2024 cho `True` vì chia hết cho 4 và không chia hết cho 100. Ngoặc cho thấy trường hợp chia hết cho 400 đứng riêng. Phạm vi bài là năm nguyên dương theo quy tắc lịch được nêu; không suy quy tắc cho mọi hệ lịch.
Bài luyện
Theo quy tắc trong bài, năm 1900 có nhuận không?
Chia hết cho 100 không đủ điều kiện.
Năm thế kỉ cần xét thêm điều kiện 400.
1900 chia hết cho 100, không chia hết cho 400 nên không nhuận.
1900 chia hết cho 4; lí do này không đúng.
Lời giải
`1900 % 400 != 0`; dù `1900 % 4 == 0`, vế `1900 % 100 != 0` sai. Cả điều kiện ghép cho `False`.
Bài luyện
Trong ba năm 1900, 2000, 2024, cặp năm nào cho `True` theo điều kiện bài học?
1900 không qua điều kiện năm thế kỉ.
1900 không nhuận theo điều kiện này.
2000 chia hết 400; 2024 chia hết 4 nhưng không chia hết 100.
1900 không phải năm nhuận theo quy tắc này.
Lời giải
2000 thỏa nhánh chia hết 400. 2024 thỏa nhánh chia hết 4 và không chia hết 100. 1900 không thỏa nhánh nào.
Đang học