Tìm và sửa lỗi: Kiểm tra ngày sinh hợp lệ khi đăng ký thẻ thư viện
Thang điểm 10 · 6 test case chấm tự động · 3 tiêu chí chấm · 1 lượt giáo viên giao cho lớp
Chương trình dưới đây được bạn Lan viết dựa theo mẫu date.py (Nhiệm vụ 3, Bài 32) để kiểm tra ngày sinh nhập vào có hợp lệ hay không, có xét năm nhuận. Tuy nhiên khi chạy thử với dữ liệu 31-04-2023 chương trình lại báo hợp lệ (sai, vì tháng 4 chỉ có 30 ngày), còn khi thử với 05-12-2023 chương trình bị lỗi và dừng đột ngột.
Mã nguồn của bạn Lan (đã đánh số dòng):
thang = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]def nhuan(year):return year % 400 == 0 or (year % 4 == 0 and year % 100 != 0)date = input()tg = date.split("-")day, month, year = int(tg[0]), int(tg[1]), int(tg[2])if nhuan(year):thang[1] = 29else:thang[1] = 28if year > 0 and 1 <= month <= 12 and 1 <= day <= thang[month]:print(day, "-", month, "-", year, "là hợp lệ")else:print("Bộ dữ liệu đã nhập không hợp lệ")
Yêu cầu: Hãy chỉ ra dòng bị lỗi, giải thích tại sao lỗi này khiến chương trình cho kết quả sai (hoặc bị lỗi dừng đột ngột), rồi viết lại chương trình đã sửa đúng để hoạt động chính xác như mẫu date.py gốc.
Định dạng vào: một dòng chứa ngày sinh dạng dd-mm-yyyy.
Định dạng ra: in ra day - month - year là hợp lệ nếu hợp lệ, ngược lại in Bộ dữ liệu đã nhập không hợp lệ.
| Input | Output | Giải thích |
|---|---|---|
| 08-02-2021 | 8 - 2 - 2021 là hợp lệ | 2021 không nhuận, tháng 2 có 28 ngày |
| 31-04-2023 | Bộ dữ liệu đã nhập không hợp lệ | Tháng 4 chỉ có 30 ngày, code lỗi từng báo sai là hợp lệ |
| 29-02-2024 | 29 - 2 - 2024 là hợp lệ | 2024 là năm nhuận (chia hết cho 4, không chia hết cho 100) |
| 05-12-2023 | 5 - 12 - 2023 là hợp lệ | Code lỗi từng bị dừng do lỗi chỉ số khi tháng 12 |
Giáo viên giao bài này cho lớp, học sinh nộp bài trực tuyến và được chấm tự động.
Giáo viên đăng nhập để giao bàiBài tập khác lớp 10
- Xét kết quả Đạt / Không đạt · Lập trình
- Cân lại mẫu đá thiên thạch trên các hành tinh khác · Lập trình
- Khám phá tên đăng nhập mạng xã hội · Lập trình
- Tính điểm trung bình 3 môn thi · Lập trình
- Tìm lỗi: Tổng lượt xem video theo ngày · Lập trình
- Tra cứu điểm số theo chỉ số danh sách · Lập trình